From 49b201a2d2e7efe53f76224805c580e74ad5aabf Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Sat, 20 May 2023 16:07:15 -0400 Subject: [PATCH 01/23] feat: expose PARAGON_VERSION as a global variable --- config/.eslintrc.js | 1 + config/data/paragonUtils.js | 108 + config/jest/setupTest.js | 10 + config/webpack.common.config.js | 23 + config/webpack.dev-stage.config.js | 1 + config/webpack.dev.config.js | 93 +- config/webpack.prod.config.js | 3 +- example/.env.development | 1 + example/package-lock.json | 1949 ++++++++++++++++- example/package.json | 2 + example/src/App.jsx | 2 + example/src/ParagonPreview.jsx | 24 + example/src/__snapshots__/App.test.jsx.snap | 44 + .../ParagonWebpackPlugin.js | 122 ++ lib/plugins/paragon-webpack-plugin/index.js | 3 + package-lock.json | 63 +- package.json | 4 +- 17 files changed, 2396 insertions(+), 57 deletions(-) create mode 100644 config/data/paragonUtils.js create mode 100644 example/src/ParagonPreview.jsx create mode 100644 lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js create mode 100644 lib/plugins/paragon-webpack-plugin/index.js diff --git a/config/.eslintrc.js b/config/.eslintrc.js index 78149d727..0451faf82 100644 --- a/config/.eslintrc.js +++ b/config/.eslintrc.js @@ -38,6 +38,7 @@ module.exports = { }, globals: { newrelic: false, + PARAGON: false, }, ignorePatterns: [ 'module.config.js', diff --git a/config/data/paragonUtils.js b/config/data/paragonUtils.js new file mode 100644 index 000000000..8a795c9fa --- /dev/null +++ b/config/data/paragonUtils.js @@ -0,0 +1,108 @@ +const path = require('path'); +const fs = require('fs'); + +/** + * Attempts to extract the Paragon version from the `node_modules` of + * the consuming application. + * + * @param {string} dir Path to directory containing `node_modules`. + * @returns {string} Paragon dependency version of the consuming application + */ +function getParagonVersion(dir) { + const pathToPackageJson = `${dir}/node_modules/@edx/paragon/package.json`; + if (!fs.existsSync(pathToPackageJson)) { + return undefined; + } + return JSON.parse(fs.readFileSync(pathToPackageJson)).version; +} + +/** + * TODO + */ +function getParagonThemeCss(dir) { + const pathToCoreCss = `${dir}/node_modules/@edx/paragon/dist/core.min.css`; + const pathToThemeVariantLightCss = `${dir}/node_modules/@edx/paragon/dist/light.min.css`; + + const coreCssExists = fs.existsSync(pathToCoreCss); + const themeVariantLightCssExists = fs.existsSync(pathToThemeVariantLightCss); + + if (!coreCssExists || !themeVariantLightCssExists) { + return undefined; + } + + const coreResult = { + filePath: path.resolve(__dirname, pathToCoreCss), + entryName: 'paragonThemeCoreCss', + outputChunkName: 'paragon-theme-core', + }; + const themeVariantResults = { + light: { + filePath: path.resolve(__dirname, pathToThemeVariantLightCss), + entryName: 'paragonThemeVariantLightCss', + outputChunkName: 'paragon-theme-variant-light', + }, + }; + + return { + core: fs.existsSync(pathToCoreCss) ? coreResult : undefined, + variants: { + light: fs.existsSync(pathToThemeVariantLightCss) ? themeVariantResults.light : undefined, + }, + }; +} + +/** + * TODO + */ +function getParagonCacheGroups(paragonThemeCss) { + const cacheGroups = {}; + if (!paragonThemeCss) { + return cacheGroups; + } + const getCacheGroupName = (module, _, cacheGroupKey) => { + const buildHash = module.buildInfo.hash; + const moduleFileName = module + .identifier() + .split('/') + .reduceRight((item) => item) + .split('|')[0] + .split('.css')[0]; + const outputChunkFilename = `${cacheGroupKey}.${buildHash}.${moduleFileName}`; + return outputChunkFilename; + }; + + cacheGroups[paragonThemeCss.core.entryName] = { + type: 'css/mini-extract', + name: getCacheGroupName, + chunks: chunk => chunk.name === paragonThemeCss.core.entryName, + enforce: true, + }; + cacheGroups[paragonThemeCss.variants.light.entryName] = { + type: 'css/mini-extract', + name: getCacheGroupName, + chunks: chunk => chunk.name === paragonThemeCss.variants.light.entryName, + enforce: true, + }; + + return cacheGroups; +} + +function getParagonEntryPoints(paragonThemeCss) { + const entryPoints = {}; + if (!paragonThemeCss) { + return entryPoints; + } + entryPoints[paragonThemeCss.core.entryName] = path.resolve(process.cwd(), paragonThemeCss.core.filePath); + entryPoints[paragonThemeCss.variants.light.entryName] = path.resolve( + process.cwd(), + paragonThemeCss.variants.light.filePath, + ); + return entryPoints; +} + +module.exports = { + getParagonVersion, + getParagonThemeCss, + getParagonCacheGroups, + getParagonEntryPoints, +}; diff --git a/config/jest/setupTest.js b/config/jest/setupTest.js index 6787604b9..977da6870 100644 --- a/config/jest/setupTest.js +++ b/config/jest/setupTest.js @@ -8,3 +8,13 @@ const testEnvFile = path.resolve(process.cwd(), '.env.test'); if (fs.existsSync(testEnvFile)) { dotenv.config({ path: testEnvFile }); } + +global.PARAGON = { + version: '1.0.0', + themeUrls: { + core: 'core.min.css', + variants: { + light: 'light.min.css', + }, + }, +}; diff --git a/config/webpack.common.config.js b/config/webpack.common.config.js index 62c3aa348..7137b839e 100644 --- a/config/webpack.common.config.js +++ b/config/webpack.common.config.js @@ -1,8 +1,19 @@ const path = require('path'); +const RemoveEmptyScriptsPlugin = require('webpack-remove-empty-scripts'); + +const ParagonWebpackPlugin = require('../lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin'); +const { + getParagonThemeCss, + getParagonCacheGroups, + getParagonEntryPoints, +} = require('./data/paragonUtils'); + +const paragonThemeCss = getParagonThemeCss(process.cwd()); module.exports = { entry: { app: path.resolve(process.cwd(), './src/index'), + ...getParagonEntryPoints(paragonThemeCss), }, output: { path: path.resolve(process.cwd(), './dist'), @@ -19,4 +30,16 @@ module.exports = { }, extensions: ['.js', '.jsx'], }, + optimization: { + splitChunks: { + chunks: 'all', + cacheGroups: { + ...getParagonCacheGroups(paragonThemeCss), + }, + }, + }, + plugins: [ + new RemoveEmptyScriptsPlugin(), + new ParagonWebpackPlugin(), + ], }; diff --git a/config/webpack.dev-stage.config.js b/config/webpack.dev-stage.config.js index d7fb2861e..f2f891fe5 100644 --- a/config/webpack.dev-stage.config.js +++ b/config/webpack.dev-stage.config.js @@ -155,6 +155,7 @@ module.exports = merge(commonConfig, { new HtmlWebpackPlugin({ inject: true, // Appends script tags linking to the webpack bundles at the end of the body template: path.resolve(process.cwd(), 'public/index.html'), + chunks: ['app'], FAVICON_URL: process.env.FAVICON_URL || null, OPTIMIZELY_PROJECT_ID: process.env.OPTIMIZELY_PROJECT_ID || null, NODE_ENV: process.env.NODE_ENV || null, diff --git a/config/webpack.dev.config.js b/config/webpack.dev.config.js index cfef10f6c..8744d9b6d 100644 --- a/config/webpack.dev.config.js +++ b/config/webpack.dev.config.js @@ -1,7 +1,8 @@ // This is the dev Webpack config. All settings here should prefer a fast build // time at the expense of creating larger, unoptimized bundles. const ImageMinimizerPlugin = require('image-minimizer-webpack-plugin'); - +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const CssNano = require('cssnano'); const { merge } = require('webpack-merge'); const Dotenv = require('dotenv-webpack'); const dotenv = require('dotenv'); @@ -31,6 +32,49 @@ resolvePrivateEnvConfig('.env.private'); const aliases = getLocalAliases(); const PUBLIC_PATH = process.env.PUBLIC_PATH || '/'; +function getStyleUseConfig({ isMinified = false } = {}) { + const postCssPlugins = [ + PostCssAutoprefixerPlugin(), + PostCssRTLCSS(), + PostCssCustomMediaCSS(), + ]; + if (isMinified) { + postCssPlugins.push(CssNano()); + } + return [ + { + loader: 'css-loader', // translates CSS into CommonJS + options: { + sourceMap: true, + modules: { + compileType: 'icss', + }, + }, + }, + { + loader: 'postcss-loader', + options: { + postcssOptions: { + plugins: postCssPlugins, + }, + }, + }, + 'resolve-url-loader', + { + loader: 'sass-loader', // compiles Sass to CSS + options: { + sourceMap: true, + sassOptions: { + includePaths: [ + path.join(process.cwd(), 'node_modules'), + path.join(process.cwd(), 'src'), + ], + }, + }, + }, + ]; +} + module.exports = merge(commonConfig, { mode: 'development', devtool: 'eval-source-map', @@ -68,41 +112,19 @@ module.exports = merge(commonConfig, { // flash-of-unstyled-content issues in development. { test: /(.scss|.css)$/, - use: [ - 'style-loader', // creates style nodes from JS strings + oneOf: [ { - loader: 'css-loader', // translates CSS into CommonJS - options: { - sourceMap: true, - modules: { - compileType: 'icss', - }, - }, - }, - { - loader: 'postcss-loader', - options: { - postcssOptions: { - plugins: [ - PostCssAutoprefixerPlugin(), - PostCssRTLCSS(), - PostCssCustomMediaCSS(), - ], - }, - }, + resource: /paragon/, + use: [ + MiniCssExtractPlugin.loader, + ...getStyleUseConfig({ isMinified: true }), + ], }, - 'resolve-url-loader', { - loader: 'sass-loader', // compiles Sass to CSS - options: { - sourceMap: true, - sassOptions: { - includePaths: [ - path.join(process.cwd(), 'node_modules'), - path.join(process.cwd(), 'src'), - ], - }, - }, + use: [ + 'style-loader', // creates style nodes from JS strings + ...getStyleUseConfig(), + ], }, ], }, @@ -154,10 +176,15 @@ module.exports = merge(commonConfig, { }, // Specify additional processing or side-effects done on the Webpack output bundles as a whole. plugins: [ + // Writes the extracted CSS from each entry to a file in the output directory. + new MiniCssExtractPlugin({ + filename: '[name].css', + }), // Generates an HTML file in the output directory. new HtmlWebpackPlugin({ inject: true, // Appends script tags linking to the webpack bundles at the end of the body template: path.resolve(process.cwd(), 'public/index.html'), + chunks: ['app'], FAVICON_URL: process.env.FAVICON_URL || null, OPTIMIZELY_PROJECT_ID: process.env.OPTIMIZELY_PROJECT_ID || null, NODE_ENV: process.env.NODE_ENV || null, diff --git a/config/webpack.prod.config.js b/config/webpack.prod.config.js index 8634a4f9a..bee29699b 100644 --- a/config/webpack.prod.config.js +++ b/config/webpack.prod.config.js @@ -115,8 +115,8 @@ module.exports = merge(commonConfig, { plugins: [ PostCssAutoprefixerPlugin(), PostCssRTLCSS(), - CssNano(), PostCssCustomMediaCSS(), + CssNano(), ...extraPostCssPlugins, ], }, @@ -201,6 +201,7 @@ module.exports = merge(commonConfig, { new HtmlWebpackPlugin({ inject: true, // Appends script tags linking to the webpack bundles at the end of the body template: path.resolve(process.cwd(), 'public/index.html'), + chunks: ['app'], FAVICON_URL: process.env.FAVICON_URL || null, OPTIMIZELY_PROJECT_ID: process.env.OPTIMIZELY_PROJECT_ID || null, NODE_ENV: process.env.NODE_ENV || null, diff --git a/example/.env.development b/example/.env.development index 03f437c27..d4ee96e07 100644 --- a/example/.env.development +++ b/example/.env.development @@ -1,2 +1,3 @@ +BASE_URL='http://localhost:8080' FAVICON_URL=https://edx-cdn.org/v3/default/favicon.ico TEST_VARIABLE='foo' diff --git a/example/package-lock.json b/example/package-lock.json index e75419273..d40a74b1b 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -9,37 +9,1280 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@edx/paragon": "^21.0.0-alpha.28", "react": "^16.14.0", "react-dom": "^16.14.0" }, "devDependencies": { + "@edx/browserslist-config": "^1.2.0", "react-test-renderer": "16.14.0" } }, + "node_modules/@babel/runtime": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz", + "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.2.tgz", + "integrity": "sha512-xm7Mgwej/wBfLoK0K5LfntmPJzoULayl1XZY9JYgQgT29JiqNw++sLnx95u5y9zCihblzkyaRYJrsRMhIBzRdg==", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.1.1", + "@csstools/css-tokenizer": "^2.1.1" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.1.tgz", + "integrity": "sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.1.1" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz", + "integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.4.tgz", + "integrity": "sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.1.1", + "@csstools/css-tokenizer": "^2.1.1" + } + }, + "node_modules/@edx/browserslist-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@edx/browserslist-config/-/browserslist-config-1.2.0.tgz", + "integrity": "sha512-T1+6P52Yx7SMkmoIr4O0Q3m/DyRdrLTJbv1xVijdRLFEq1hqdafEs+Ln1423U5LSkTePb9AOkEtL1G0RZLFl1w==", + "dev": true + }, + "node_modules/@edx/paragon": { + "version": "21.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-21.0.0-alpha.28.tgz", + "integrity": "sha512-hbNGwZBDPcQq0JM9Ty679btoxiGEZSUesj/h12bv7GLUwj3z/slxiGLNlUsjod55NWWuI0saMgyMUj1rX8Xrig==", + "dependencies": { + "@popperjs/core": "^2.11.4", + "bootstrap": "^4.6.2", + "chroma-js": "^2.4.2", + "classnames": "^2.3.1", + "commander": "^9.4.1", + "email-prop-type": "^3.0.0", + "file-selector": "^0.6.0", + "glob": "^8.0.3", + "lodash.uniqby": "^4.7.0", + "mailto-link": "^2.0.0", + "postcss": "^8.4.21", + "postcss-combine-duplicated-selectors": "^10.0.3", + "postcss-custom-media": "^9.1.2", + "postcss-import": "^15.1.0", + "postcss-map": "^0.11.0", + "postcss-minify": "^1.1.0", + "prop-types": "^15.8.1", + "react-bootstrap": "^1.6.5", + "react-colorful": "^5.6.1", + "react-dropzone": "^14.2.1", + "react-focus-on": "^3.5.4", + "react-loading-skeleton": "^3.1.0", + "react-popper": "^2.2.5", + "react-proptype-conditional-require": "^1.0.4", + "react-responsive": "^8.2.0", + "react-table": "^7.7.0", + "react-transition-group": "^4.4.2", + "sass": "^1.58.3", + "style-dictionary": "^3.7.1", + "tabbable": "^5.3.3", + "uncontrollable": "^7.2.1", + "uuid": "^9.0.0" + }, + "bin": { + "build-design-tokens": "tokens/build-tokens.js", + "build-scss": "build-scss.js", + "replace-scss-with-css": "tokens/replace-variables.js" + }, + "peerDependencies": { + "react": "^16.8.6 || ^17.0.0", + "react-dom": "^16.8.6 || ^17.0.0", + "react-intl": "^5.25.1" + } + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", + "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "peer": true, + "dependencies": { + "@formatjs/intl-localematcher": "0.2.25", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz", + "integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==", + "peer": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz", + "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/icu-skeleton-parser": "1.3.6", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz", + "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/intl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.2.1.tgz", + "integrity": "sha512-vgvyUOOrzqVaOFYzTf2d3+ToSkH2JpR7x/4U1RyoHQLmvEaTQvXJ7A2qm1Iy3brGNXC/+/7bUlc3lpH+h/LOJA==", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/fast-memoize": "1.2.1", + "@formatjs/icu-messageformat-parser": "2.1.0", + "@formatjs/intl-displaynames": "5.4.3", + "@formatjs/intl-listformat": "6.5.3", + "intl-messageformat": "9.13.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "typescript": "^4.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@formatjs/intl-displaynames": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-5.4.3.tgz", + "integrity": "sha512-4r12A3mS5dp5hnSaQCWBuBNfi9Amgx2dzhU4lTFfhSxgb5DOAiAbMpg6+7gpWZgl4ahsj3l2r/iHIjdmdXOE2Q==", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/intl-localematcher": "0.2.25", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/intl-listformat": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-6.5.3.tgz", + "integrity": "sha512-ozpz515F/+3CU+HnLi5DYPsLa6JoCfBggBSSg/8nOB5LYSFW9+ZgNQJxJ8tdhKYeODT+4qVHX27EeJLoxLGLNg==", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/intl-localematcher": "0.2.25", + "tslib": "^2.1.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.2.25", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz", + "integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==", + "peer": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", + "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@restart/context": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz", + "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==", + "peerDependencies": { + "react": ">=16.3.2" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.9.tgz", + "integrity": "sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==", + "dependencies": { + "dequal": "^2.0.2" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "peer": true, + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/invariant": { + "version": "2.2.35", + "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz", + "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "node_modules/@types/react": { + "version": "18.2.6", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.6.tgz", + "integrity": "sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "node_modules/@types/warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", + "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" + }, + "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==", + "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==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/assert-ok": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-ok/-/assert-ok-1.0.0.tgz", + "integrity": "sha512-lCvYmCpMl8c1tp9ynExhoDEk0gGW43SVVC3RE1VYrrVKhNMy8GHfdiwZdoIM6a605s56bUAbENQxtOC0uZp3wg==" + }, + "node_modules/attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bootstrap": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", + "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/cast-array": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cast-array/-/cast-array-1.0.1.tgz", + "integrity": "sha512-EiqtV+M9L42wd0IRgYjgVGDq7vdNBUUrdecd03QReJp8pIr59o2A1b0XfP+aCUlzLKx2E7zVetaogeJCtiHa+w==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "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" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chroma-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", + "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" + }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "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==", + "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==" + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, + "node_modules/css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==" + }, + "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==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/email-prop-type": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/email-prop-type/-/email-prop-type-3.0.1.tgz", + "integrity": "sha512-tONZGMEOOkadp5OBftuVXU8DsceWmINxYK+pqPFB4LT5ODjrPX/esel3WGqbV7d6in5/MnZE4n4QcqOr4gh7dg==", + "dependencies": { + "email-validator": "^2.0.4" + } + }, + "node_modules/email-validator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", + "engines": { + "node": ">4.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/focus-lock": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.6.tgz", + "integrity": "sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==", + "dependencies": { + "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "peer": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + }, + "node_modules/immutable": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/intl-messageformat": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz", + "integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/fast-memoize": "1.2.1", + "@formatjs/icu-messageformat-parser": "2.1.0", + "tslib": "^2.1.0" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "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==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "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==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/jquery": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.0.tgz", + "integrity": "sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==", + "peer": true + }, "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==" }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/mailto-link": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mailto-link/-/mailto-link-2.0.0.tgz", + "integrity": "sha512-b5FErkZ4t6mpH1IFZSw7Mm2IQHXQ2R0/5Q4xd7Rv8dVkWvE54mFG/UW7HjfFazXFjXTNsM+dSX2tTeIDrV9K9A==", + "dependencies": { + "assert-ok": "~1.0.0", + "cast-array": "~1.0.1", + "object-filter": "~1.0.2", + "query-string": "~7.0.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/matchmediaquery": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz", + "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==", + "dependencies": { + "css-mediaquery": "^0.1.2" + } + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-filter": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-filter/-/object-filter-1.0.2.tgz", + "integrity": "sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "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" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-combine-duplicated-selectors": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-10.0.3.tgz", + "integrity": "sha512-IP0BmwFloCskv7DV7xqvzDXqMHpwdczJa6ZvIW8abgHdcIHs9mCJX2ltFhu3EwA51ozp13DByng30+Ke+eIExA==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-custom-media": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-9.1.3.tgz", + "integrity": "sha512-W1C4Fu6KAZ7sKYQCuGMr8gyaE4BtjTQGPLVS4m0WCaWM6l7PgVbvmDeb4ClBc5R/7kdwESYf0hdxGtEPhi9CLA==", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^1.0.2", + "@csstools/css-parser-algorithms": "^2.1.1", + "@csstools/css-tokenizer": "^2.1.1", + "@csstools/media-query-list-parser": "^2.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-map": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/postcss-map/-/postcss-map-0.11.0.tgz", + "integrity": "sha512-cgHYZrH9aAMds90upYUPhYz8xnAcRD45SwuNns/nQHONIrPQDhpwk3JLsAQGOndQxnRVXfB6nB+3WqSMy8fqlA==", + "dependencies": { + "js-yaml": "^3.12.0", + "postcss": "^7.0.2", + "reduce-function-call": "^1.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-map/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, + "node_modules/postcss-map/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-minify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify/-/postcss-minify-1.1.0.tgz", + "integrity": "sha512-9D64ueIW0DL2FdLajQTlXrnTN8Ox9NjuXqigKMmB819RhdClNPYx5Zp3i5x0ghjjy3vGrLBBYEYvJjY/1eMNbw==", "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "postcss-selector-parser": "^6.0", + "postcss-value-parser": "^4.1" }, - "bin": { - "loose-envify": "cli.js" + "peerDependencies": { + "postcss": "^8.0" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "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==" + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -50,6 +1293,35 @@ "react-is": "^16.13.1" } }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/query-string": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", + "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/react": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", @@ -63,6 +1335,54 @@ "node": ">=0.10.0" } }, + "node_modules/react-bootstrap": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.7.tgz", + "integrity": "sha512-IzCYXuLSKDEjGFglbFWk0/iHmdhdcJzTmtS6lXxc0kaNFx2PFgrQf5jKnx5sarF2tiXh9Tgx3pSt3pdK7YwkMA==", + "dependencies": { + "@babel/runtime": "^7.14.0", + "@restart/context": "^2.1.4", + "@restart/hooks": "^0.4.7", + "@types/invariant": "^2.2.33", + "@types/prop-types": "^15.7.3", + "@types/react": ">=16.14.8", + "@types/react-transition-group": "^4.4.1", + "@types/warning": "^3.0.0", + "classnames": "^2.3.1", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "prop-types-extra": "^1.1.0", + "react-overlays": "^5.1.2", + "react-transition-group": "^4.4.1", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-clientside-effect": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", + "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", + "dependencies": { + "@babel/runtime": "^7.12.13" + }, + "peerDependencies": { + "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-colorful": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", + "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/react-dom": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", @@ -77,11 +1397,254 @@ "react": "^16.14.0" } }, + "node_modules/react-dropzone": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "dependencies": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8 || 18.0.0" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "node_modules/react-focus-lock": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.4.tgz", + "integrity": "sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^0.11.6", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.6", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-focus-on": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/react-focus-on/-/react-focus-on-3.8.1.tgz", + "integrity": "sha512-fQcBx+SZMgXoRL+69r5+ic4bdVgqaCeKeoFPra8yhcSuL/3unWavfdirEFBGgH71K+RiocMTS6DETHcX0SlOZg==", + "dependencies": { + "aria-hidden": "^1.2.2", + "react-focus-lock": "^2.9.2", + "react-remove-scroll": "^2.5.6", + "react-style-singleton": "^2.2.0", + "tslib": "^2.3.1", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-intl": { + "version": "5.25.1", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.25.1.tgz", + "integrity": "sha512-pkjdQDvpJROoXLMltkP/5mZb0/XqrqLoPGKUCfbdkP8m6U9xbK40K51Wu+a4aQqTEvEK5lHBk0fWzUV72SJ3Hg==", + "peer": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/icu-messageformat-parser": "2.1.0", + "@formatjs/intl": "2.2.1", + "@formatjs/intl-displaynames": "5.4.3", + "@formatjs/intl-listformat": "6.5.3", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/react": "16 || 17 || 18", + "hoist-non-react-statics": "^3.3.2", + "intl-messageformat": "9.13.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "react": "^16.3.0 || 17 || 18", + "typescript": "^4.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-loading-skeleton": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.3.1.tgz", + "integrity": "sha512-NilqqwMh2v9omN7LteiDloEVpFyMIa0VGqF+ukqp0ncVlYu1sKYbYGX9JEl+GtOT9TKsh04zCHAbavnQ2USldA==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/react-overlays": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz", + "integrity": "sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==", + "dependencies": { + "@babel/runtime": "^7.13.8", + "@popperjs/core": "^2.11.6", + "@restart/hooks": "^0.4.7", + "@types/warning": "^3.0.0", + "dom-helpers": "^5.2.0", + "prop-types": "^15.7.2", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, + "node_modules/react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "dependencies": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/react-proptype-conditional-require": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz", + "integrity": "sha512-nopsRn7KnGgazBe2c3H2+Kf+Csp6PGDRLiBkYEDMKY8o/EIgft/WnIm/OnAKTawZiLnJXHAqhpFBddvs6NiXlw==" + }, + "node_modules/react-remove-scroll": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz", + "integrity": "sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.4", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-responsive": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-8.2.0.tgz", + "integrity": "sha512-iagCqVrw4QSjhxKp3I/YK6+ODkWY6G+YPElvdYKiUUbywwh9Ds0M7r26Fj2/7dWFFbOpcGnJE6uE7aMck8j5Qg==", + "dependencies": { + "hyphenate-style-name": "^1.0.0", + "matchmediaquery": "^0.3.0", + "prop-types": "^15.6.1", + "shallow-equal": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-table": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.8.0.tgz", + "integrity": "sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.3 || ^17.0.0-0 || ^18.0.0" + } + }, "node_modules/react-test-renderer": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz", @@ -97,6 +1660,85 @@ "react": "^16.14.0" } }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "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==", + "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==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reduce-function-call": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", + "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sass": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", + "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/scheduler": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", @@ -105,6 +1747,289 @@ "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } + }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/style-dictionary": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-3.8.0.tgz", + "integrity": "sha512-wHlB/f5eO3mDcYv6WtOz6gvQC477jBKrwuIXe+PtHskTCBsJdAOvL8hCquczJxDui2TnwpeNE+2msK91JJomZg==", + "dependencies": { + "chalk": "^4.0.0", + "change-case": "^4.1.2", + "commander": "^8.3.0", + "fs-extra": "^10.0.0", + "glob": "^7.2.0", + "json5": "^2.2.2", + "jsonc-parser": "^3.0.0", + "lodash": "^4.17.15", + "tinycolor2": "^1.4.1" + }, + "bin": { + "style-dictionary": "bin/style-dictionary" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/style-dictionary/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/style-dictionary/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/style-dictionary/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/style-dictionary/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tabbable": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", + "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "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==" + }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" } } } diff --git a/example/package.json b/example/package.json index e6624509e..4e2d74a48 100644 --- a/example/package.json +++ b/example/package.json @@ -14,10 +14,12 @@ "author": "", "license": "ISC", "dependencies": { + "@edx/paragon": "^21.0.0-alpha.28", "react": "^16.14.0", "react-dom": "^16.14.0" }, "devDependencies": { + "@edx/browserslist-config": "^1.2.0", "react-test-renderer": "16.14.0" } } diff --git a/example/src/App.jsx b/example/src/App.jsx index 2f1346339..453f8e51b 100644 --- a/example/src/App.jsx +++ b/example/src/App.jsx @@ -3,6 +3,7 @@ import appleUrl, { ReactComponent as Apple } from './apple.svg'; import appleImg from './apple.jpg'; import './style.scss'; +import ParagonPreview from './ParagonPreview'; // eslint-disable-next-line react/function-component-definition export default function App() { @@ -35,6 +36,7 @@ export default function App() {

env.config.js integer test: {Number.isInteger(config.INTEGER_VALUE) ? 'It was an integer. Great.' : 'It was not an integer! Why not? '}

Right-to-left language handling tests

I'm aligned right, but left in RTL.

+ ); } diff --git a/example/src/ParagonPreview.jsx b/example/src/ParagonPreview.jsx new file mode 100644 index 000000000..b228d412a --- /dev/null +++ b/example/src/ParagonPreview.jsx @@ -0,0 +1,24 @@ +import React from 'react'; + +const ParagonPreview = () => ( + <> +

Paragon

+

Exposed Theme CSS

+ +

Contents of PARAGON global variable

+
{JSON.stringify(PARAGON, null, 2)}
+ +); + +export default ParagonPreview; diff --git a/example/src/__snapshots__/App.test.jsx.snap b/example/src/__snapshots__/App.test.jsx.snap index 5666dd15d..c94422ebb 100644 --- a/example/src/__snapshots__/App.test.jsx.snap +++ b/example/src/__snapshots__/App.test.jsx.snap @@ -104,5 +104,49 @@ exports[`Basic test should render 1`] = ` > I'm aligned right, but left in RTL.

+

+ Paragon +

+

+ Exposed Theme CSS +

+ +

+ Contents of + + PARAGON + + global variable +

+
+    {
+  "version": "1.0.0",
+  "themeUrls": {
+    "core": "core.min.css",
+    "variants": {
+      "light": "light.min.css"
+    }
+  }
+}
+  
`; diff --git a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js new file mode 100644 index 000000000..b46f50c4d --- /dev/null +++ b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js @@ -0,0 +1,122 @@ +const { Compilation, sources } = require('webpack'); +const parse5 = require('parse5'); +const { + getParagonVersion, + getParagonThemeCss, +} = require('../../../config/data/paragonUtils'); + +const paragonVersion = getParagonVersion(process.cwd()); +const paragonThemeCss = getParagonThemeCss(process.cwd()); + +class ParagonWebpackPlugin { + constructor() { + this.version = paragonVersion; + if (paragonThemeCss) { + this.coreEntryName = paragonThemeCss.core.entryName; + this.themeVariantEntryNames = {}; + Object.entries(paragonThemeCss.variants).forEach(([key, value]) => { + this.themeVariantEntryNames[key] = value.entryName; + }); + } + } + + logger(message) { + console.log('[ParagonWebpackPlugin]', message); + } + + getDescendantByTag(node, tag) { + for (let i = 0; i < node.childNodes?.length; i++) { + if (node.childNodes[i].tagName === tag) { + return node.childNodes[i]; + } + const result = this.getDescendantByTag(node.childNodes[i], tag); + if (result) { + return result; + } + } + return null; + } + + apply(compiler) { + compiler.hooks.thisCompilation.tap('ParagonWebpackPlugin', (compilation) => { + compilation.hooks.processAssets.tap( + { + name: 'ParagonWebpackPlugin', + stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONS, + additionalAssets: true, + }, + () => { + const file = compilation.getAsset('index.html'); + if (!file) { + return; + } + + // get paragon assets + const paragonAssets = compilation.getAssets().filter((asset) => asset.name.includes('paragon') && asset.name.endsWith('.css')); + const coreCssAsset = paragonAssets.find((asset) => asset.name.includes(this.coreEntryName))?.name; + const themeVariantLightAsset = paragonAssets.find((asset) => ( + asset.name.includes(this.themeVariantEntryNames.light) + ))?.name; + if (!coreCssAsset || !themeVariantLightAsset) { + this.logger("Unable to find `@edx/paragon`'s CSS in compilation assets. Skipping."); + return; + } + + const originalSource = file.source.source(); + const newSource = new sources.ReplaceSource( + new sources.RawSource(originalSource), + 'index.html', + ); + + // parse file as html document + const document = parse5.parse(originalSource, { + sourceCodeLocationInfo: true, + }); + + // find the body element + const bodyElement = this.getDescendantByTag(document, 'body'); + if (!bodyElement) { + throw new Error('Missing body element in index.html'); + } + + // determine script insertion point + let scriptInsertionPoint; + if (bodyElement.sourceCodeLocation?.endTag) { + scriptInsertionPoint = bodyElement.sourceCodeLocation.endTag.startOffset; + } else { + // less accurate fallback + scriptInsertionPoint = originalSource.indexOf(''); + } + + // update index.html with new content + const paragonScript = ` + + ` + // minify the above script + .replace(/>[\r\n ]+<') + .replace(/(<.*?>)|\s+/g, (m, $1) => { + if ($1) { return $1; } + return ' '; + }) + .trim(); + + // insert the Paragon script into the HTML document + newSource.insert(scriptInsertionPoint, paragonScript); + compilation.updateAsset('index.html', new sources.RawSource(newSource.source())); + }, + ); + }); + } +} + +module.exports = ParagonWebpackPlugin; diff --git a/lib/plugins/paragon-webpack-plugin/index.js b/lib/plugins/paragon-webpack-plugin/index.js new file mode 100644 index 000000000..ac2486f89 --- /dev/null +++ b/lib/plugins/paragon-webpack-plugin/index.js @@ -0,0 +1,3 @@ +const ParagonWebpackPlugin = require('./ParagonWebpackPlugin'); + +module.exports = ParagonWebpackPlugin; diff --git a/package-lock.json b/package-lock.json index 97ed29e9b..4fd0acd2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,6 +45,7 @@ "image-minimizer-webpack-plugin": "3.8.2", "jest": "26.6.3", "mini-css-extract-plugin": "1.6.2", + "parse5": "7.1.2", "postcss": "8.4.24", "postcss-custom-media": "^9.1.2", "postcss-loader": "7.3.2", @@ -62,7 +63,8 @@ "webpack-bundle-analyzer": "4.8.0", "webpack-cli": "5.1.1", "webpack-dev-server": "4.15.0", - "webpack-merge": "5.9.0" + "webpack-merge": "5.9.0", + "webpack-remove-empty-scripts": "1.0.3" }, "bin": { "fedx-scripts": "bin/fedx-scripts.js" @@ -1997,9 +1999,9 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.19.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", - "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -4127,6 +4129,18 @@ "node": ">=4" } }, + "node_modules/ansis": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-1.5.2.tgz", + "integrity": "sha512-T3vUABrcgSj/HXv27P+A/JxGk5b/ydx0JjN3lgjBTC2iZUFxQGjh43zCzLSbU4C1QTgmx9oaPeWNJFM+auI8qw==", + "engines": { + "node": ">=12.13" + }, + "funding": { + "type": "patreon", + "url": "https://patreon.com/biodiscus" + } + }, "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -11634,6 +11648,11 @@ } } }, + "node_modules/jsdom/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -12753,9 +12772,15 @@ } }, "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/parseurl": { "version": "1.3.3", @@ -13187,9 +13212,9 @@ } }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -17331,6 +17356,24 @@ "node": ">=10.0.0" } }, + "node_modules/webpack-remove-empty-scripts": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/webpack-remove-empty-scripts/-/webpack-remove-empty-scripts-1.0.3.tgz", + "integrity": "sha512-1+Gg43r+4REb+3AUWbgjM3LIlxxE8YIqMnGpOmmhnaYK2rv4q58WbHYhZ9IRhTyt/+1qWoKQoPz/ebze5RnRYA==", + "dependencies": { + "ansis": "1.5.2" + }, + "engines": { + "node": ">=12.14" + }, + "funding": { + "type": "patreon", + "url": "https://patreon.com/biodiscus" + }, + "peerDependencies": { + "webpack": ">=5.32.0" + } + }, "node_modules/webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", diff --git a/package.json b/package.json index 4dce92d0b..dee108508 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "image-minimizer-webpack-plugin": "3.8.2", "jest": "26.6.3", "mini-css-extract-plugin": "1.6.2", + "parse5": "7.1.2", "postcss": "8.4.24", "postcss-custom-media": "^9.1.2", "postcss-loader": "7.3.2", @@ -78,7 +79,8 @@ "webpack-bundle-analyzer": "4.8.0", "webpack-cli": "5.1.1", "webpack-dev-server": "4.15.0", - "webpack-merge": "5.9.0" + "webpack-merge": "5.9.0", + "webpack-remove-empty-scripts": "1.0.3" }, "devDependencies": { "@babel/preset-typescript": "^7.18.6", From af90f4587aa5ef15132e6f32698c87f2557bd55b Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Mon, 29 May 2023 13:10:18 -0400 Subject: [PATCH 02/23] fix: rely on paragon-theme.json from @edx/paragon --- config/data/paragonUtils.js | 87 +++--- config/webpack.dev.config.js | 19 +- example/package-lock.json | 264 +++++++++++++++--- example/package.json | 2 +- .../ParagonWebpackPlugin.js | 165 +++++++---- 5 files changed, 379 insertions(+), 158 deletions(-) diff --git a/config/data/paragonUtils.js b/config/data/paragonUtils.js index 8a795c9fa..de9f0aa41 100644 --- a/config/data/paragonUtils.js +++ b/config/data/paragonUtils.js @@ -20,37 +20,53 @@ function getParagonVersion(dir) { * TODO */ function getParagonThemeCss(dir) { - const pathToCoreCss = `${dir}/node_modules/@edx/paragon/dist/core.min.css`; - const pathToThemeVariantLightCss = `${dir}/node_modules/@edx/paragon/dist/light.min.css`; + const pathToParagonThemeOutput = path.resolve(dir, './node_modules/@edx/paragon', 'dist', 'paragon-theme.json'); + if (!fs.existsSync(pathToParagonThemeOutput)) { + return undefined; + } + const paragonConfig = JSON.parse(fs.readFileSync(pathToParagonThemeOutput)); + const { + core: coreThemePath, + variants: themeVariantPaths, + } = paragonConfig?.themeUrls || {}; + const pathToCoreCss = path.resolve(dir, './node_modules/@edx/paragon', 'dist', coreThemePath.minified); const coreCssExists = fs.existsSync(pathToCoreCss); - const themeVariantLightCssExists = fs.existsSync(pathToThemeVariantLightCss); - if (!coreCssExists || !themeVariantLightCssExists) { + const validThemeVariantPaths = Object.entries(themeVariantPaths || {}).filter(([, value]) => { + const themeVariantCssDefault = path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.default); + const themeVariantCssMinified = path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.minified); + return fs.existsSync(themeVariantCssDefault) && fs.existsSync(themeVariantCssMinified); + }); + + if (!coreCssExists || validThemeVariantPaths.length === 0) { return undefined; } - const coreResult = { - filePath: path.resolve(__dirname, pathToCoreCss), - entryName: 'paragonThemeCoreCss', + filePath: path.resolve(dir, pathToCoreCss), + entryName: 'paragon.theme.core', outputChunkName: 'paragon-theme-core', }; - const themeVariantResults = { - light: { - filePath: path.resolve(__dirname, pathToThemeVariantLightCss), - entryName: 'paragonThemeVariantLightCss', - outputChunkName: 'paragon-theme-variant-light', - }, - }; + + const themeVariantResults = {}; + validThemeVariantPaths.forEach(([key, value]) => { + themeVariantResults[key] = { + filePath: path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.minified), + entryName: `paragon.theme.variants.${key}`, + outputChunkName: `paragon-theme-variant-${key}`, + }; + }); return { core: fs.existsSync(pathToCoreCss) ? coreResult : undefined, - variants: { - light: fs.existsSync(pathToThemeVariantLightCss) ? themeVariantResults.light : undefined, - }, + variants: themeVariantResults, }; } +function replacePeriodsWithHyphens(string) { + return string.replaceAll('.', '-'); +} + /** * TODO */ @@ -59,31 +75,20 @@ function getParagonCacheGroups(paragonThemeCss) { if (!paragonThemeCss) { return cacheGroups; } - const getCacheGroupName = (module, _, cacheGroupKey) => { - const buildHash = module.buildInfo.hash; - const moduleFileName = module - .identifier() - .split('/') - .reduceRight((item) => item) - .split('|')[0] - .split('.css')[0]; - const outputChunkFilename = `${cacheGroupKey}.${buildHash}.${moduleFileName}`; - return outputChunkFilename; - }; - cacheGroups[paragonThemeCss.core.entryName] = { type: 'css/mini-extract', - name: getCacheGroupName, + name: replacePeriodsWithHyphens(paragonThemeCss.core.entryName), chunks: chunk => chunk.name === paragonThemeCss.core.entryName, enforce: true, }; - cacheGroups[paragonThemeCss.variants.light.entryName] = { - type: 'css/mini-extract', - name: getCacheGroupName, - chunks: chunk => chunk.name === paragonThemeCss.variants.light.entryName, - enforce: true, - }; - + Object.values(paragonThemeCss.variants).forEach(({ entryName }) => { + cacheGroups[entryName] = { + type: 'css/mini-extract', + name: replacePeriodsWithHyphens(entryName), + chunks: chunk => chunk.name === entryName, + enforce: true, + }; + }); return cacheGroups; } @@ -93,10 +98,9 @@ function getParagonEntryPoints(paragonThemeCss) { return entryPoints; } entryPoints[paragonThemeCss.core.entryName] = path.resolve(process.cwd(), paragonThemeCss.core.filePath); - entryPoints[paragonThemeCss.variants.light.entryName] = path.resolve( - process.cwd(), - paragonThemeCss.variants.light.filePath, - ); + Object.values(paragonThemeCss.variants).forEach(({ filePath, entryName }) => { + entryPoints[entryName] = path.resolve(process.cwd(), filePath); + }); return entryPoints; } @@ -105,4 +109,5 @@ module.exports = { getParagonThemeCss, getParagonCacheGroups, getParagonEntryPoints, + replacePeriodsWithHyphens, }; diff --git a/config/webpack.dev.config.js b/config/webpack.dev.config.js index 8744d9b6d..36a2879bc 100644 --- a/config/webpack.dev.config.js +++ b/config/webpack.dev.config.js @@ -2,7 +2,6 @@ // time at the expense of creating larger, unoptimized bundles. const ImageMinimizerPlugin = require('image-minimizer-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); -const CssNano = require('cssnano'); const { merge } = require('webpack-merge'); const Dotenv = require('dotenv-webpack'); const dotenv = require('dotenv'); @@ -32,15 +31,7 @@ resolvePrivateEnvConfig('.env.private'); const aliases = getLocalAliases(); const PUBLIC_PATH = process.env.PUBLIC_PATH || '/'; -function getStyleUseConfig({ isMinified = false } = {}) { - const postCssPlugins = [ - PostCssAutoprefixerPlugin(), - PostCssRTLCSS(), - PostCssCustomMediaCSS(), - ]; - if (isMinified) { - postCssPlugins.push(CssNano()); - } +function getStyleUseConfig() { return [ { loader: 'css-loader', // translates CSS into CommonJS @@ -55,7 +46,11 @@ function getStyleUseConfig({ isMinified = false } = {}) { loader: 'postcss-loader', options: { postcssOptions: { - plugins: postCssPlugins, + plugins: [ + PostCssAutoprefixerPlugin(), + PostCssRTLCSS(), + PostCssCustomMediaCSS(), + ], }, }, }, @@ -117,7 +112,7 @@ module.exports = merge(commonConfig, { resource: /paragon/, use: [ MiniCssExtractPlugin.loader, - ...getStyleUseConfig({ isMinified: true }), + ...getStyleUseConfig(), ], }, { diff --git a/example/package-lock.json b/example/package-lock.json index d40a74b1b..64ffbdd27 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -9,12 +9,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@edx/paragon": "^21.0.0-alpha.28", "react": "^16.14.0", "react-dom": "^16.14.0" }, "devDependencies": { "@edx/browserslist-config": "^1.2.0", + "@edx/paragon": "^21.0.0-alpha.29", "react-test-renderer": "16.14.0" } }, @@ -22,6 +22,7 @@ "version": "7.21.5", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz", "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==", + "dev": true, "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -33,6 +34,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.2.tgz", "integrity": "sha512-xm7Mgwej/wBfLoK0K5LfntmPJzoULayl1XZY9JYgQgT29JiqNw++sLnx95u5y9zCihblzkyaRYJrsRMhIBzRdg==", + "dev": true, "engines": { "node": "^14 || ^16 || >=18" }, @@ -49,6 +51,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.1.tgz", "integrity": "sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==", + "dev": true, "engines": { "node": "^14 || ^16 || >=18" }, @@ -64,6 +67,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz", "integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==", + "dev": true, "engines": { "node": "^14 || ^16 || >=18" }, @@ -76,6 +80,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.4.tgz", "integrity": "sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==", + "dev": true, "engines": { "node": "^14 || ^16 || >=18" }, @@ -95,9 +100,10 @@ "dev": true }, "node_modules/@edx/paragon": { - "version": "21.0.0-alpha.28", - "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-21.0.0-alpha.28.tgz", - "integrity": "sha512-hbNGwZBDPcQq0JM9Ty679btoxiGEZSUesj/h12bv7GLUwj3z/slxiGLNlUsjod55NWWuI0saMgyMUj1rX8Xrig==", + "version": "21.0.0-alpha.29", + "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-21.0.0-alpha.29.tgz", + "integrity": "sha512-yQPsAqhCiLVdHMMmC5E7glMsZdoXBZwpewEsuOkck2rYTevPStFJ91/5QcSmuhArGDR90AUzXtrVe57J7ONB3A==", + "dev": true, "dependencies": { "@popperjs/core": "^2.11.4", "bootstrap": "^4.6.2", @@ -147,6 +153,7 @@ "version": "1.11.4", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "dev": true, "peer": true, "dependencies": { "@formatjs/intl-localematcher": "0.2.25", @@ -157,6 +164,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz", "integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==", + "dev": true, "peer": true, "dependencies": { "tslib": "^2.1.0" @@ -166,6 +174,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz", "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==", + "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -177,6 +186,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz", "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==", + "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -187,6 +197,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.2.1.tgz", "integrity": "sha512-vgvyUOOrzqVaOFYzTf2d3+ToSkH2JpR7x/4U1RyoHQLmvEaTQvXJ7A2qm1Iy3brGNXC/+/7bUlc3lpH+h/LOJA==", + "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -210,6 +221,7 @@ "version": "5.4.3", "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-5.4.3.tgz", "integrity": "sha512-4r12A3mS5dp5hnSaQCWBuBNfi9Amgx2dzhU4lTFfhSxgb5DOAiAbMpg6+7gpWZgl4ahsj3l2r/iHIjdmdXOE2Q==", + "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -221,6 +233,7 @@ "version": "6.5.3", "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-6.5.3.tgz", "integrity": "sha512-ozpz515F/+3CU+HnLi5DYPsLa6JoCfBggBSSg/8nOB5LYSFW9+ZgNQJxJ8tdhKYeODT+4qVHX27EeJLoxLGLNg==", + "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -232,6 +245,7 @@ "version": "0.2.25", "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz", "integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==", + "dev": true, "peer": true, "dependencies": { "tslib": "^2.1.0" @@ -241,6 +255,7 @@ "version": "2.11.7", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==", + "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -250,6 +265,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz", "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==", + "dev": true, "peerDependencies": { "react": ">=16.3.2" } @@ -258,6 +274,7 @@ "version": "0.4.9", "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.9.tgz", "integrity": "sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==", + "dev": true, "dependencies": { "dequal": "^2.0.2" }, @@ -269,6 +286,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "dev": true, "peer": true, "dependencies": { "@types/react": "*", @@ -278,17 +296,20 @@ "node_modules/@types/invariant": { "version": "2.2.35", "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz", - "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==" + "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==", + "dev": true }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true }, "node_modules/@types/react": { "version": "18.2.6", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.6.tgz", "integrity": "sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==", + "dev": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -299,6 +320,7 @@ "version": "4.4.6", "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "dev": true, "dependencies": { "@types/react": "*" } @@ -306,17 +328,20 @@ "node_modules/@types/scheduler": { "version": "0.16.3", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "dev": true }, "node_modules/@types/warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" + "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==", + "dev": true }, "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, "dependencies": { "color-convert": "^2.0.1" }, @@ -331,6 +356,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -343,6 +369,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -351,6 +378,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "dev": true, "dependencies": { "tslib": "^2.0.0" }, @@ -361,12 +389,14 @@ "node_modules/assert-ok": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-ok/-/assert-ok-1.0.0.tgz", - "integrity": "sha512-lCvYmCpMl8c1tp9ynExhoDEk0gGW43SVVC3RE1VYrrVKhNMy8GHfdiwZdoIM6a605s56bUAbENQxtOC0uZp3wg==" + "integrity": "sha512-lCvYmCpMl8c1tp9ynExhoDEk0gGW43SVVC3RE1VYrrVKhNMy8GHfdiwZdoIM6a605s56bUAbENQxtOC0uZp3wg==", + "dev": true }, "node_modules/attr-accept": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "dev": true, "engines": { "node": ">=4" } @@ -374,12 +404,14 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, "engines": { "node": ">=8" } @@ -388,6 +420,7 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "dev": true, "funding": [ { "type": "github", @@ -407,6 +440,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -415,6 +449,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -426,6 +461,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -435,6 +471,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -445,6 +482,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/cast-array/-/cast-array-1.0.1.tgz", "integrity": "sha512-EiqtV+M9L42wd0IRgYjgVGDq7vdNBUUrdecd03QReJp8pIr59o2A1b0XfP+aCUlzLKx2E7zVetaogeJCtiHa+w==", + "dev": true, "dependencies": { "isarray": "0.0.1" } @@ -453,6 +491,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -468,6 +507,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, "dependencies": { "camel-case": "^4.1.2", "capital-case": "^1.0.4", @@ -487,6 +527,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, "funding": [ { "type": "individual", @@ -512,17 +553,20 @@ "node_modules/chroma-js": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", - "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" + "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==", + "dev": true }, "node_modules/classnames": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==", + "dev": true }, "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, "dependencies": { "color-name": "~1.1.4" }, @@ -533,12 +577,14 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, "engines": { "node": "^12.20.0 || >=14" } @@ -546,12 +592,14 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/constant-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -561,12 +609,14 @@ "node_modules/css-mediaquery": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", - "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==" + "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==", + "dev": true }, "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, "bin": { "cssesc": "bin/cssesc" }, @@ -577,12 +627,14 @@ "node_modules/csstype": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true }, "node_modules/decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, "engines": { "node": ">=0.10" } @@ -591,6 +643,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, "engines": { "node": ">=6" } @@ -598,12 +651,14 @@ "node_modules/detect-node-es": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "dev": true }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dev": true, "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -613,6 +668,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -622,6 +678,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/email-prop-type/-/email-prop-type-3.0.1.tgz", "integrity": "sha512-tONZGMEOOkadp5OBftuVXU8DsceWmINxYK+pqPFB4LT5ODjrPX/esel3WGqbV7d6in5/MnZE4n4QcqOr4gh7dg==", + "dev": true, "dependencies": { "email-validator": "^2.0.4" } @@ -630,6 +687,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", + "dev": true, "engines": { "node": ">4.0" } @@ -638,6 +696,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -650,6 +709,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "dev": true, "dependencies": { "tslib": "^2.4.0" }, @@ -661,6 +721,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -672,6 +733,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -680,6 +742,7 @@ "version": "0.11.6", "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.6.tgz", "integrity": "sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==", + "dev": true, "dependencies": { "tslib": "^2.0.3" }, @@ -691,6 +754,7 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -703,12 +767,14 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -721,12 +787,14 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/get-nonce": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "dev": true, "engines": { "node": ">=6" } @@ -735,6 +803,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -753,6 +822,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -763,12 +833,14 @@ "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==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -780,6 +852,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -788,6 +861,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, "dependencies": { "capital-case": "^1.0.4", "tslib": "^2.0.3" @@ -797,6 +871,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, "peer": true, "dependencies": { "react-is": "^16.7.0" @@ -805,17 +880,20 @@ "node_modules/hyphenate-style-name": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==", + "dev": true }, "node_modules/immutable": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==" + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -824,12 +902,14 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/intl-messageformat": { "version": "9.13.0", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz", "integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==", + "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -842,6 +922,7 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, "dependencies": { "loose-envify": "^1.0.0" } @@ -850,6 +931,7 @@ "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, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -861,6 +943,7 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -872,6 +955,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -880,6 +964,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -891,6 +976,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { "node": ">=0.12.0" } @@ -898,12 +984,14 @@ "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true }, "node_modules/jquery": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.0.tgz", "integrity": "sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==", + "dev": true, "peer": true }, "node_modules/js-tokens": { @@ -915,6 +1003,7 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -927,6 +1016,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -937,12 +1027,14 @@ "node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true }, "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, "dependencies": { "universalify": "^2.0.0" }, @@ -953,12 +1045,14 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.uniqby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true }, "node_modules/loose-envify": { "version": "1.4.0", @@ -975,6 +1069,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -983,6 +1078,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mailto-link/-/mailto-link-2.0.0.tgz", "integrity": "sha512-b5FErkZ4t6mpH1IFZSw7Mm2IQHXQ2R0/5Q4xd7Rv8dVkWvE54mFG/UW7HjfFazXFjXTNsM+dSX2tTeIDrV9K9A==", + "dev": true, "dependencies": { "assert-ok": "~1.0.0", "cast-array": "~1.0.1", @@ -997,6 +1093,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz", "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==", + "dev": true, "dependencies": { "css-mediaquery": "^0.1.2" } @@ -1005,6 +1102,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1016,6 +1114,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, "funding": [ { "type": "github", @@ -1033,6 +1132,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -1042,6 +1142,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -1057,12 +1158,14 @@ "node_modules/object-filter": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/object-filter/-/object-filter-1.0.2.tgz", - "integrity": "sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==" + "integrity": "sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==", + "dev": true }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "dependencies": { "wrappy": "1" } @@ -1071,6 +1174,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -1080,6 +1184,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -1089,6 +1194,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -1098,6 +1204,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -1105,17 +1212,20 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "engines": { "node": ">=8.6" }, @@ -1127,6 +1237,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -1136,6 +1247,7 @@ "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "dev": true, "peer": true, "funding": { "type": "opencollective", @@ -1146,6 +1258,7 @@ "version": "8.4.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "dev": true, "funding": [ { "type": "opencollective", @@ -1173,6 +1286,7 @@ "version": "10.0.3", "resolved": "https://registry.npmjs.org/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-10.0.3.tgz", "integrity": "sha512-IP0BmwFloCskv7DV7xqvzDXqMHpwdczJa6ZvIW8abgHdcIHs9mCJX2ltFhu3EwA51ozp13DByng30+Ke+eIExA==", + "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -1187,6 +1301,7 @@ "version": "9.1.3", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-9.1.3.tgz", "integrity": "sha512-W1C4Fu6KAZ7sKYQCuGMr8gyaE4BtjTQGPLVS4m0WCaWM6l7PgVbvmDeb4ClBc5R/7kdwESYf0hdxGtEPhi9CLA==", + "dev": true, "dependencies": { "@csstools/cascade-layer-name-parser": "^1.0.2", "@csstools/css-parser-algorithms": "^2.1.1", @@ -1208,6 +1323,7 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -1224,6 +1340,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/postcss-map/-/postcss-map-0.11.0.tgz", "integrity": "sha512-cgHYZrH9aAMds90upYUPhYz8xnAcRD45SwuNns/nQHONIrPQDhpwk3JLsAQGOndQxnRVXfB6nB+3WqSMy8fqlA==", + "dev": true, "dependencies": { "js-yaml": "^3.12.0", "postcss": "^7.0.2", @@ -1236,12 +1353,14 @@ "node_modules/postcss-map/node_modules/picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, "node_modules/postcss-map/node_modules/postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -1258,6 +1377,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/postcss-minify/-/postcss-minify-1.1.0.tgz", "integrity": "sha512-9D64ueIW0DL2FdLajQTlXrnTN8Ox9NjuXqigKMmB819RhdClNPYx5Zp3i5x0ghjjy3vGrLBBYEYvJjY/1eMNbw==", + "dev": true, "dependencies": { "postcss-selector-parser": "^6.0", "postcss-value-parser": "^4.1" @@ -1270,6 +1390,7 @@ "version": "6.0.13", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -1281,7 +1402,8 @@ "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==" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true }, "node_modules/prop-types": { "version": "15.8.1", @@ -1297,6 +1419,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "dev": true, "dependencies": { "react-is": "^16.3.2", "warning": "^4.0.0" @@ -1309,6 +1432,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", + "dev": true, "dependencies": { "decode-uri-component": "^0.2.0", "filter-obj": "^1.1.0", @@ -1339,6 +1463,7 @@ "version": "1.6.7", "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.7.tgz", "integrity": "sha512-IzCYXuLSKDEjGFglbFWk0/iHmdhdcJzTmtS6lXxc0kaNFx2PFgrQf5jKnx5sarF2tiXh9Tgx3pSt3pdK7YwkMA==", + "dev": true, "dependencies": { "@babel/runtime": "^7.14.0", "@restart/context": "^2.1.4", @@ -1367,6 +1492,7 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", + "dev": true, "dependencies": { "@babel/runtime": "^7.12.13" }, @@ -1378,6 +1504,7 @@ "version": "5.6.1", "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "dev": true, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" @@ -1401,6 +1528,7 @@ "version": "14.2.3", "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "dev": true, "dependencies": { "attr-accept": "^2.2.2", "file-selector": "^0.6.0", @@ -1416,12 +1544,14 @@ "node_modules/react-fast-compare": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", - "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "dev": true }, "node_modules/react-focus-lock": { "version": "2.9.4", "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.4.tgz", "integrity": "sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg==", + "dev": true, "dependencies": { "@babel/runtime": "^7.0.0", "focus-lock": "^0.11.6", @@ -1444,6 +1574,7 @@ "version": "3.8.1", "resolved": "https://registry.npmjs.org/react-focus-on/-/react-focus-on-3.8.1.tgz", "integrity": "sha512-fQcBx+SZMgXoRL+69r5+ic4bdVgqaCeKeoFPra8yhcSuL/3unWavfdirEFBGgH71K+RiocMTS6DETHcX0SlOZg==", + "dev": true, "dependencies": { "aria-hidden": "^1.2.2", "react-focus-lock": "^2.9.2", @@ -1470,6 +1601,7 @@ "version": "5.25.1", "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.25.1.tgz", "integrity": "sha512-pkjdQDvpJROoXLMltkP/5mZb0/XqrqLoPGKUCfbdkP8m6U9xbK40K51Wu+a4aQqTEvEK5lHBk0fWzUV72SJ3Hg==", + "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -1501,12 +1633,14 @@ "node_modules/react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "dev": true }, "node_modules/react-loading-skeleton": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.3.1.tgz", "integrity": "sha512-NilqqwMh2v9omN7LteiDloEVpFyMIa0VGqF+ukqp0ncVlYu1sKYbYGX9JEl+GtOT9TKsh04zCHAbavnQ2USldA==", + "dev": true, "peerDependencies": { "react": ">=16.8.0" } @@ -1515,6 +1649,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz", "integrity": "sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.8", "@popperjs/core": "^2.11.6", @@ -1534,6 +1669,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "dev": true, "dependencies": { "react-fast-compare": "^3.0.1", "warning": "^4.0.2" @@ -1547,12 +1683,14 @@ "node_modules/react-proptype-conditional-require": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz", - "integrity": "sha512-nopsRn7KnGgazBe2c3H2+Kf+Csp6PGDRLiBkYEDMKY8o/EIgft/WnIm/OnAKTawZiLnJXHAqhpFBddvs6NiXlw==" + "integrity": "sha512-nopsRn7KnGgazBe2c3H2+Kf+Csp6PGDRLiBkYEDMKY8o/EIgft/WnIm/OnAKTawZiLnJXHAqhpFBddvs6NiXlw==", + "dev": true }, "node_modules/react-remove-scroll": { "version": "2.5.6", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz", "integrity": "sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==", + "dev": true, "dependencies": { "react-remove-scroll-bar": "^2.3.4", "react-style-singleton": "^2.2.1", @@ -1577,6 +1715,7 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "dev": true, "dependencies": { "react-style-singleton": "^2.2.1", "tslib": "^2.0.0" @@ -1598,6 +1737,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-8.2.0.tgz", "integrity": "sha512-iagCqVrw4QSjhxKp3I/YK6+ODkWY6G+YPElvdYKiUUbywwh9Ds0M7r26Fj2/7dWFFbOpcGnJE6uE7aMck8j5Qg==", + "dev": true, "dependencies": { "hyphenate-style-name": "^1.0.0", "matchmediaquery": "^0.3.0", @@ -1615,6 +1755,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dev": true, "dependencies": { "get-nonce": "^1.0.0", "invariant": "^2.2.4", @@ -1637,6 +1778,7 @@ "version": "7.8.0", "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.8.0.tgz", "integrity": "sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==", + "dev": true, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" @@ -1664,6 +1806,7 @@ "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dev": true, "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -1679,6 +1822,7 @@ "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, "dependencies": { "pify": "^2.3.0" } @@ -1687,6 +1831,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -1698,6 +1843,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -1705,12 +1851,14 @@ "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, "dependencies": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", @@ -1727,6 +1875,7 @@ "version": "1.62.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", + "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -1752,6 +1901,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -1761,12 +1911,14 @@ "node_modules/shallow-equal": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", - "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==", + "dev": true }, "node_modules/snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -1776,6 +1928,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -1784,6 +1937,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -1792,6 +1946,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true, "engines": { "node": ">=6" } @@ -1799,12 +1954,14 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "dev": true, "engines": { "node": ">=4" } @@ -1813,6 +1970,7 @@ "version": "3.8.0", "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-3.8.0.tgz", "integrity": "sha512-wHlB/f5eO3mDcYv6WtOz6gvQC477jBKrwuIXe+PtHskTCBsJdAOvL8hCquczJxDui2TnwpeNE+2msK91JJomZg==", + "dev": true, "dependencies": { "chalk": "^4.0.0", "change-case": "^4.1.2", @@ -1835,6 +1993,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1844,6 +2003,7 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, "engines": { "node": ">= 12" } @@ -1852,6 +2012,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1871,6 +2032,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1882,6 +2044,7 @@ "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, "dependencies": { "has-flag": "^4.0.0" }, @@ -1893,6 +2056,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -1903,17 +2067,20 @@ "node_modules/tabbable": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", - "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" + "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==", + "dev": true }, "node_modules/tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "dev": true }, "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, "dependencies": { "is-number": "^7.0.0" }, @@ -1924,12 +2091,14 @@ "node_modules/tslib": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", - "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==", + "dev": true }, "node_modules/uncontrollable": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "dev": true, "dependencies": { "@babel/runtime": "^7.6.3", "@types/react": ">=16.9.11", @@ -1944,6 +2113,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, "engines": { "node": ">= 10.0.0" } @@ -1952,6 +2122,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -1960,6 +2131,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -1968,6 +2140,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "dev": true, "dependencies": { "tslib": "^2.0.0" }, @@ -1988,6 +2161,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dev": true, "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" @@ -2008,12 +2182,14 @@ "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==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, "node_modules/uuid": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -2022,6 +2198,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dev": true, "dependencies": { "loose-envify": "^1.0.0" } @@ -2029,7 +2206,8 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true } } } diff --git a/example/package.json b/example/package.json index 4e2d74a48..4fd76fc07 100644 --- a/example/package.json +++ b/example/package.json @@ -14,12 +14,12 @@ "author": "", "license": "ISC", "dependencies": { - "@edx/paragon": "^21.0.0-alpha.28", "react": "^16.14.0", "react-dom": "^16.14.0" }, "devDependencies": { "@edx/browserslist-config": "^1.2.0", + "@edx/paragon": "^21.0.0-alpha.29", "react-test-renderer": "16.14.0" } } diff --git a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js index b46f50c4d..5b1f73926 100644 --- a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +++ b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js @@ -3,6 +3,7 @@ const parse5 = require('parse5'); const { getParagonVersion, getParagonThemeCss, + replacePeriodsWithHyphens, } = require('../../../config/data/paragonUtils'); const paragonVersion = getParagonVersion(process.cwd()); @@ -11,13 +12,14 @@ const paragonThemeCss = getParagonThemeCss(process.cwd()); class ParagonWebpackPlugin { constructor() { this.version = paragonVersion; - if (paragonThemeCss) { - this.coreEntryName = paragonThemeCss.core.entryName; - this.themeVariantEntryNames = {}; - Object.entries(paragonThemeCss.variants).forEach(([key, value]) => { - this.themeVariantEntryNames[key] = value.entryName; - }); + if (!paragonThemeCss) { + return; } + this.coreEntryName = replacePeriodsWithHyphens(paragonThemeCss.core.entryName); + this.themeVariantEntryNames = {}; + Object.entries(paragonThemeCss.variants).forEach(([key, value]) => { + this.themeVariantEntryNames[key] = replacePeriodsWithHyphens(value.entryName); + }); } logger(message) { @@ -37,6 +39,87 @@ class ParagonWebpackPlugin { return null; } + getParagonCssAssetsFromCompilation(compilation) { + const paragonAssets = compilation.getAssets().filter(asset => asset.name.includes('paragon') && asset.name.endsWith('.css')); + const coreCssAsset = paragonAssets.find((asset) => asset.name.includes(this.coreEntryName))?.name; + + const themeVariantCssAssets = {}; + Object.entries(this.themeVariantEntryNames).forEach(([themeVariant, themeVariantEntryName]) => { + const foundThemeVariantAsset = paragonAssets.find((asset) => asset.name.includes(themeVariantEntryName)); + if (!foundThemeVariantAsset) { + return; + } + themeVariantCssAssets[themeVariant] = foundThemeVariantAsset.name; + }); + + return { + coreCssAsset, + themeVariantCssAssets, + }; + } + + findScriptInsertionPoint({ document, originalSource }) { + const bodyElement = this.getDescendantByTag(document, 'body'); + if (!bodyElement) { + throw new Error('Missing body element in index.html'); + } + + // determine script insertion point + if (bodyElement.sourceCodeLocation?.endTag) { + return bodyElement.sourceCodeLocation.endTag.startOffset; + } + // less accurate fallback + return originalSource.indexOf(''); + } + + minifyScript(script) { + return script + .replace(/>[\r\n ]+<') + .replace(/(<.*?>)|\s+/g, (m, $1) => { + if ($1) { return $1; } + return ' '; + }) + .trim(); + } + + insertParagonScriptIntoDocument({ + originalSource, + coreCssAsset, + themeVariantCssAssets, + }) { + // parse file as html document + const document = parse5.parse(originalSource, { + sourceCodeLocationInfo: true, + }); + + // find the body element + const scriptInsertionPoint = this.findScriptInsertionPoint({ + document, + originalSource, + }); + + // update index.html with new content + const paragonScript = ` + + `; + + // insert the Paragon script into the HTML document + const newSource = new sources.ReplaceSource( + new sources.RawSource(originalSource), + 'index.html', + ); + newSource.insert(scriptInsertionPoint, this.minifyScript(paragonScript)); + return newSource; + } + apply(compiler) { compiler.hooks.thisCompilation.tap('ParagonWebpackPlugin', (compilation) => { compilation.hooks.processAssets.tap( @@ -50,68 +133,28 @@ class ParagonWebpackPlugin { if (!file) { return; } + const { + coreCssAsset, + themeVariantCssAssets, + } = this.getParagonCssAssetsFromCompilation(compilation); - // get paragon assets - const paragonAssets = compilation.getAssets().filter((asset) => asset.name.includes('paragon') && asset.name.endsWith('.css')); - const coreCssAsset = paragonAssets.find((asset) => asset.name.includes(this.coreEntryName))?.name; - const themeVariantLightAsset = paragonAssets.find((asset) => ( - asset.name.includes(this.themeVariantEntryNames.light) - ))?.name; - if (!coreCssAsset || !themeVariantLightAsset) { + console.log('assets', { + coreCssAsset, + themeVariantCssAssets, + }); + + // TODO: assert at least one theme variant is defined in themeVariantAssets + if (!coreCssAsset || !Object.keys(themeVariantCssAssets).length === 0) { this.logger("Unable to find `@edx/paragon`'s CSS in compilation assets. Skipping."); return; } const originalSource = file.source.source(); - const newSource = new sources.ReplaceSource( - new sources.RawSource(originalSource), - 'index.html', - ); - - // parse file as html document - const document = parse5.parse(originalSource, { - sourceCodeLocationInfo: true, + const newSource = this.insertParagonScriptIntoDocument({ + originalSource, + coreCssAsset, + themeVariantCssAssets, }); - - // find the body element - const bodyElement = this.getDescendantByTag(document, 'body'); - if (!bodyElement) { - throw new Error('Missing body element in index.html'); - } - - // determine script insertion point - let scriptInsertionPoint; - if (bodyElement.sourceCodeLocation?.endTag) { - scriptInsertionPoint = bodyElement.sourceCodeLocation.endTag.startOffset; - } else { - // less accurate fallback - scriptInsertionPoint = originalSource.indexOf(''); - } - - // update index.html with new content - const paragonScript = ` - - ` - // minify the above script - .replace(/>[\r\n ]+<') - .replace(/(<.*?>)|\s+/g, (m, $1) => { - if ($1) { return $1; } - return ' '; - }) - .trim(); - - // insert the Paragon script into the HTML document - newSource.insert(scriptInsertionPoint, paragonScript); compilation.updateAsset('index.html', new sources.RawSource(newSource.source())); }, ); From 82c5614b70ec7bc720a1c1e8873fcb6a5742297e Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Mon, 29 May 2023 13:50:17 -0400 Subject: [PATCH 03/23] chore: clean up and add typedefs --- config/data/paragonUtils.js | 49 ++++++++++++++++--- .../ParagonWebpackPlugin.js | 9 +--- 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/config/data/paragonUtils.js b/config/data/paragonUtils.js index de9f0aa41..de4d24d83 100644 --- a/config/data/paragonUtils.js +++ b/config/data/paragonUtils.js @@ -17,7 +17,22 @@ function getParagonVersion(dir) { } /** - * TODO + * @typedef {Object} ParagonThemeCssAsset + * @property {string} filePath + * @property {string} entryName + * @property {string} outputChunkName + */ + +/** + * @typedef {Object} ParagonThemeCss + * @property {ParagonThemeCssAsset} core The metadata about the core Paragon theme CSS + * @property {Object.} variants A collection of theme variants. + */ + +/** + * Attempts to extract the Paragon theme CSS from the locally installed `@edx/paragon` package. + * @param {string} dir Path to directory containing `node_modules`. + * @returns {ParagonThemeCss} */ function getParagonThemeCss(dir) { const pathToParagonThemeOutput = path.resolve(dir, './node_modules/@edx/paragon', 'dist', 'paragon-theme.json'); @@ -49,11 +64,11 @@ function getParagonThemeCss(dir) { }; const themeVariantResults = {}; - validThemeVariantPaths.forEach(([key, value]) => { - themeVariantResults[key] = { + validThemeVariantPaths.forEach(([themeVariant, value]) => { + themeVariantResults[themeVariant] = { filePath: path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.minified), - entryName: `paragon.theme.variants.${key}`, - outputChunkName: `paragon-theme-variant-${key}`, + entryName: `paragon.theme.variants.${themeVariant}`, + outputChunkName: `paragon-theme-variant-${themeVariant}`, }; }); @@ -63,12 +78,26 @@ function getParagonThemeCss(dir) { }; } -function replacePeriodsWithHyphens(string) { - return string.replaceAll('.', '-'); +/** + * Replaces all periods in a string with hyphens. + * @param {string} str A string containing periods to replace with hyphens. + * @returns The input string with periods replaced with hyphens. + */ +function replacePeriodsWithHyphens(str) { + return str.replaceAll('.', '-'); } /** - * TODO + * @typedef CacheGroup + * @property {string} type The type of cache group. + * @property {string|function} name The name of the cache group. + * @property {function} chunks A function that returns true if the chunk should be included in the cache group. + * @property {boolean} enforce If true, this cache group will be created even if it conflicts with default cache groups. + */ + +/** + * @param {ParagonThemeCss} paragonThemeCss The Paragon theme CSS metadata. + * @returns {Object.} The cache groups for the Paragon theme CSS. */ function getParagonCacheGroups(paragonThemeCss) { const cacheGroups = {}; @@ -92,6 +121,10 @@ function getParagonCacheGroups(paragonThemeCss) { return cacheGroups; } +/** + * @param {ParagonThemeCss} paragonThemeCss The Paragon theme CSS metadata. + * @returns {Object.} The entry points for the Paragon theme CSS. + */ function getParagonEntryPoints(paragonThemeCss) { const entryPoints = {}; if (!paragonThemeCss) { diff --git a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js index 5b1f73926..b2f020f70 100644 --- a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +++ b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js @@ -68,6 +68,7 @@ class ParagonWebpackPlugin { if (bodyElement.sourceCodeLocation?.endTag) { return bodyElement.sourceCodeLocation.endTag.startOffset; } + // less accurate fallback return originalSource.indexOf(''); } @@ -98,7 +99,7 @@ class ParagonWebpackPlugin { originalSource, }); - // update index.html with new content + // create Paragon script to inject into the HTML document const paragonScript = ` `; @@ -139,17 +132,28 @@ class ParagonWebpackPlugin { themeVariantCssAssets, } = this.getParagonCssAssetsFromCompilation(compilation); + const originalSource = file.source.source(); + let newSource; if (!coreCssAsset || !Object.keys(themeVariantCssAssets).length === 0) { - this.logger("Unable to find `@edx/paragon`'s CSS in compilation assets. Skipping."); - return; + newSource = this.insertParagonScriptIntoDocument({ + originalSource, + scriptContents: undefined, + }); + } else { + const scriptContents = { + version: this.version, + themeUrls: { + core: coreCssAsset, + variants: themeVariantCssAssets, + }, + }; + newSource = this.insertParagonScriptIntoDocument({ + originalSource, + coreCssAsset, + themeVariantCssAssets, + scriptContents, + }); } - - const originalSource = file.source.source(); - const newSource = this.insertParagonScriptIntoDocument({ - originalSource, - coreCssAsset, - themeVariantCssAssets, - }); compilation.updateAsset('index.html', new sources.RawSource(newSource.source())); }, ); From 73ba105afbb5652bbd06eaec27bf9a90df6d511e Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Mon, 29 May 2023 15:43:13 -0400 Subject: [PATCH 05/23] fix: moar better error handling --- lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js index b0d7d71ab..bb094d5c3 100644 --- a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +++ b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js @@ -12,11 +12,12 @@ const paragonThemeCss = getParagonThemeCss(process.cwd()); class ParagonWebpackPlugin { constructor() { this.version = paragonVersion; + this.coreEntryName = undefined; + this.themeVariantEntryNames = {}; if (!paragonThemeCss) { return; } this.coreEntryName = replacePeriodsWithHyphens(paragonThemeCss.core.entryName); - this.themeVariantEntryNames = {}; Object.entries(paragonThemeCss.variants).forEach(([key, value]) => { this.themeVariantEntryNames[key] = replacePeriodsWithHyphens(value.entryName); }); From 0c347189cdecb702fd937630f718d3d3c2ef1d15 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Mon, 29 May 2023 16:05:12 -0400 Subject: [PATCH 06/23] fix: updates --- example/package-lock.json | 288 ++++++++------------------------------ example/package.json | 8 +- 2 files changed, 59 insertions(+), 237 deletions(-) diff --git a/example/package-lock.json b/example/package-lock.json index 64ffbdd27..d85ead41f 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -9,20 +9,19 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "react": "^16.14.0", - "react-dom": "^16.14.0" + "@edx/paragon": "21.0.0-alpha.29", + "react": "16.14.0", + "react-dom": "16.14.0" }, "devDependencies": { - "@edx/browserslist-config": "^1.2.0", - "@edx/paragon": "^21.0.0-alpha.29", + "@edx/browserslist-config": "1.2.0", "react-test-renderer": "16.14.0" } }, "node_modules/@babel/runtime": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz", - "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==", - "dev": true, + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", + "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -34,7 +33,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.2.tgz", "integrity": "sha512-xm7Mgwej/wBfLoK0K5LfntmPJzoULayl1XZY9JYgQgT29JiqNw++sLnx95u5y9zCihblzkyaRYJrsRMhIBzRdg==", - "dev": true, "engines": { "node": "^14 || ^16 || >=18" }, @@ -51,7 +49,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.1.tgz", "integrity": "sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==", - "dev": true, "engines": { "node": "^14 || ^16 || >=18" }, @@ -67,7 +64,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz", "integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==", - "dev": true, "engines": { "node": "^14 || ^16 || >=18" }, @@ -80,7 +76,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.4.tgz", "integrity": "sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==", - "dev": true, "engines": { "node": "^14 || ^16 || >=18" }, @@ -103,7 +98,6 @@ "version": "21.0.0-alpha.29", "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-21.0.0-alpha.29.tgz", "integrity": "sha512-yQPsAqhCiLVdHMMmC5E7glMsZdoXBZwpewEsuOkck2rYTevPStFJ91/5QcSmuhArGDR90AUzXtrVe57J7ONB3A==", - "dev": true, "dependencies": { "@popperjs/core": "^2.11.4", "bootstrap": "^4.6.2", @@ -153,7 +147,6 @@ "version": "1.11.4", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", - "dev": true, "peer": true, "dependencies": { "@formatjs/intl-localematcher": "0.2.25", @@ -164,7 +157,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz", "integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==", - "dev": true, "peer": true, "dependencies": { "tslib": "^2.1.0" @@ -174,7 +166,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz", "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==", - "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -186,7 +177,6 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz", "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==", - "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -197,7 +187,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.2.1.tgz", "integrity": "sha512-vgvyUOOrzqVaOFYzTf2d3+ToSkH2JpR7x/4U1RyoHQLmvEaTQvXJ7A2qm1Iy3brGNXC/+/7bUlc3lpH+h/LOJA==", - "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -221,7 +210,6 @@ "version": "5.4.3", "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-5.4.3.tgz", "integrity": "sha512-4r12A3mS5dp5hnSaQCWBuBNfi9Amgx2dzhU4lTFfhSxgb5DOAiAbMpg6+7gpWZgl4ahsj3l2r/iHIjdmdXOE2Q==", - "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -233,7 +221,6 @@ "version": "6.5.3", "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-6.5.3.tgz", "integrity": "sha512-ozpz515F/+3CU+HnLi5DYPsLa6JoCfBggBSSg/8nOB5LYSFW9+ZgNQJxJ8tdhKYeODT+4qVHX27EeJLoxLGLNg==", - "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -245,17 +232,15 @@ "version": "0.2.25", "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz", "integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==", - "dev": true, "peer": true, "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@popperjs/core": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", - "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==", - "dev": true, + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -265,7 +250,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz", "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==", - "dev": true, "peerDependencies": { "react": ">=16.3.2" } @@ -274,7 +258,6 @@ "version": "0.4.9", "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.9.tgz", "integrity": "sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==", - "dev": true, "dependencies": { "dequal": "^2.0.2" }, @@ -286,7 +269,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "dev": true, "peer": true, "dependencies": { "@types/react": "*", @@ -296,20 +278,17 @@ "node_modules/@types/invariant": { "version": "2.2.35", "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz", - "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==", - "dev": true + "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==" }, "node_modules/@types/prop-types": { "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/react": { - "version": "18.2.6", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.6.tgz", - "integrity": "sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==", - "dev": true, + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.7.tgz", + "integrity": "sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -320,7 +299,6 @@ "version": "4.4.6", "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", - "dev": true, "dependencies": { "@types/react": "*" } @@ -328,20 +306,17 @@ "node_modules/@types/scheduler": { "version": "0.16.3", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" }, "node_modules/@types/warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==", - "dev": true + "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" }, "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, "dependencies": { "color-convert": "^2.0.1" }, @@ -356,7 +331,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -369,7 +343,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -378,7 +351,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", - "dev": true, "dependencies": { "tslib": "^2.0.0" }, @@ -389,14 +361,12 @@ "node_modules/assert-ok": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-ok/-/assert-ok-1.0.0.tgz", - "integrity": "sha512-lCvYmCpMl8c1tp9ynExhoDEk0gGW43SVVC3RE1VYrrVKhNMy8GHfdiwZdoIM6a605s56bUAbENQxtOC0uZp3wg==", - "dev": true + "integrity": "sha512-lCvYmCpMl8c1tp9ynExhoDEk0gGW43SVVC3RE1VYrrVKhNMy8GHfdiwZdoIM6a605s56bUAbENQxtOC0uZp3wg==" }, "node_modules/attr-accept": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", - "dev": true, "engines": { "node": ">=4" } @@ -404,14 +374,12 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "engines": { "node": ">=8" } @@ -420,7 +388,6 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", - "dev": true, "funding": [ { "type": "github", @@ -440,7 +407,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -449,7 +415,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -461,7 +426,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -471,7 +435,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -482,7 +445,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/cast-array/-/cast-array-1.0.1.tgz", "integrity": "sha512-EiqtV+M9L42wd0IRgYjgVGDq7vdNBUUrdecd03QReJp8pIr59o2A1b0XfP+aCUlzLKx2E7zVetaogeJCtiHa+w==", - "dev": true, "dependencies": { "isarray": "0.0.1" } @@ -491,7 +453,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -507,7 +468,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dev": true, "dependencies": { "camel-case": "^4.1.2", "capital-case": "^1.0.4", @@ -527,7 +487,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "funding": [ { "type": "individual", @@ -553,20 +512,17 @@ "node_modules/chroma-js": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", - "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==", - "dev": true + "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" }, "node_modules/classnames": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==", - "dev": true + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" }, "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, "dependencies": { "color-name": "~1.1.4" }, @@ -577,14 +533,12 @@ "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 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, "engines": { "node": "^12.20.0 || >=14" } @@ -592,14 +546,12 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/constant-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -609,14 +561,12 @@ "node_modules/css-mediaquery": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", - "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==", - "dev": true + "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==" }, "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, "bin": { "cssesc": "bin/cssesc" }, @@ -627,14 +577,12 @@ "node_modules/csstype": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, "node_modules/decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, "engines": { "node": ">=0.10" } @@ -643,7 +591,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, "engines": { "node": ">=6" } @@ -651,14 +598,12 @@ "node_modules/detect-node-es": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "dev": true + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dev": true, "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -668,7 +613,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -678,7 +622,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/email-prop-type/-/email-prop-type-3.0.1.tgz", "integrity": "sha512-tONZGMEOOkadp5OBftuVXU8DsceWmINxYK+pqPFB4LT5ODjrPX/esel3WGqbV7d6in5/MnZE4n4QcqOr4gh7dg==", - "dev": true, "dependencies": { "email-validator": "^2.0.4" } @@ -687,7 +630,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", - "dev": true, "engines": { "node": ">4.0" } @@ -696,7 +638,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -709,7 +650,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", - "dev": true, "dependencies": { "tslib": "^2.4.0" }, @@ -721,7 +661,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -733,7 +672,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -742,7 +680,6 @@ "version": "0.11.6", "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.6.tgz", "integrity": "sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" }, @@ -754,7 +691,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -767,14 +703,12 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -787,14 +721,12 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/get-nonce": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "dev": true, "engines": { "node": ">=6" } @@ -803,7 +735,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -822,7 +753,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -833,14 +763,12 @@ "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 + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -852,7 +780,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -861,7 +788,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dev": true, "dependencies": { "capital-case": "^1.0.4", "tslib": "^2.0.3" @@ -871,7 +797,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dev": true, "peer": true, "dependencies": { "react-is": "^16.7.0" @@ -880,20 +805,17 @@ "node_modules/hyphenate-style-name": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==", - "dev": true + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" }, "node_modules/immutable": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==" }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -902,14 +824,12 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/intl-messageformat": { "version": "9.13.0", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz", "integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==", - "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -922,7 +842,6 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, "dependencies": { "loose-envify": "^1.0.0" } @@ -931,7 +850,6 @@ "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, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -943,7 +861,6 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -955,7 +872,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -964,7 +880,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -976,7 +891,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -984,14 +898,12 @@ "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" }, "node_modules/jquery": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.0.tgz", "integrity": "sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==", - "dev": true, "peer": true }, "node_modules/js-tokens": { @@ -1003,7 +915,6 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1016,7 +927,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -1027,14 +937,12 @@ "node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" }, "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, "dependencies": { "universalify": "^2.0.0" }, @@ -1045,14 +953,12 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.uniqby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", - "dev": true + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" }, "node_modules/loose-envify": { "version": "1.4.0", @@ -1069,7 +975,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -1078,7 +983,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mailto-link/-/mailto-link-2.0.0.tgz", "integrity": "sha512-b5FErkZ4t6mpH1IFZSw7Mm2IQHXQ2R0/5Q4xd7Rv8dVkWvE54mFG/UW7HjfFazXFjXTNsM+dSX2tTeIDrV9K9A==", - "dev": true, "dependencies": { "assert-ok": "~1.0.0", "cast-array": "~1.0.1", @@ -1093,7 +997,6 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz", "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==", - "dev": true, "dependencies": { "css-mediaquery": "^0.1.2" } @@ -1102,7 +1005,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1114,7 +1016,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, "funding": [ { "type": "github", @@ -1132,7 +1033,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -1142,7 +1042,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1158,14 +1057,12 @@ "node_modules/object-filter": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/object-filter/-/object-filter-1.0.2.tgz", - "integrity": "sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==", - "dev": true + "integrity": "sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==" }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -1174,7 +1071,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -1184,7 +1080,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -1194,7 +1089,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -1204,7 +1098,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1212,20 +1105,17 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -1237,7 +1127,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1247,7 +1136,6 @@ "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "dev": true, "peer": true, "funding": { "type": "opencollective", @@ -1255,10 +1143,9 @@ } }, "node_modules/postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", - "dev": true, + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", + "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", "funding": [ { "type": "opencollective", @@ -1286,7 +1173,6 @@ "version": "10.0.3", "resolved": "https://registry.npmjs.org/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-10.0.3.tgz", "integrity": "sha512-IP0BmwFloCskv7DV7xqvzDXqMHpwdczJa6ZvIW8abgHdcIHs9mCJX2ltFhu3EwA51ozp13DByng30+Ke+eIExA==", - "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -1301,7 +1187,6 @@ "version": "9.1.3", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-9.1.3.tgz", "integrity": "sha512-W1C4Fu6KAZ7sKYQCuGMr8gyaE4BtjTQGPLVS4m0WCaWM6l7PgVbvmDeb4ClBc5R/7kdwESYf0hdxGtEPhi9CLA==", - "dev": true, "dependencies": { "@csstools/cascade-layer-name-parser": "^1.0.2", "@csstools/css-parser-algorithms": "^2.1.1", @@ -1323,7 +1208,6 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -1340,7 +1224,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/postcss-map/-/postcss-map-0.11.0.tgz", "integrity": "sha512-cgHYZrH9aAMds90upYUPhYz8xnAcRD45SwuNns/nQHONIrPQDhpwk3JLsAQGOndQxnRVXfB6nB+3WqSMy8fqlA==", - "dev": true, "dependencies": { "js-yaml": "^3.12.0", "postcss": "^7.0.2", @@ -1353,14 +1236,12 @@ "node_modules/postcss-map/node_modules/picocolors": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" }, "node_modules/postcss-map/node_modules/postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, "dependencies": { "picocolors": "^0.2.1", "source-map": "^0.6.1" @@ -1377,7 +1258,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/postcss-minify/-/postcss-minify-1.1.0.tgz", "integrity": "sha512-9D64ueIW0DL2FdLajQTlXrnTN8Ox9NjuXqigKMmB819RhdClNPYx5Zp3i5x0ghjjy3vGrLBBYEYvJjY/1eMNbw==", - "dev": true, "dependencies": { "postcss-selector-parser": "^6.0", "postcss-value-parser": "^4.1" @@ -1390,7 +1270,6 @@ "version": "6.0.13", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -1402,8 +1281,7 @@ "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 + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/prop-types": { "version": "15.8.1", @@ -1419,7 +1297,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", - "dev": true, "dependencies": { "react-is": "^16.3.2", "warning": "^4.0.0" @@ -1432,7 +1309,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz", "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==", - "dev": true, "dependencies": { "decode-uri-component": "^0.2.0", "filter-obj": "^1.1.0", @@ -1463,7 +1339,6 @@ "version": "1.6.7", "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.7.tgz", "integrity": "sha512-IzCYXuLSKDEjGFglbFWk0/iHmdhdcJzTmtS6lXxc0kaNFx2PFgrQf5jKnx5sarF2tiXh9Tgx3pSt3pdK7YwkMA==", - "dev": true, "dependencies": { "@babel/runtime": "^7.14.0", "@restart/context": "^2.1.4", @@ -1492,7 +1367,6 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz", "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.13" }, @@ -1504,7 +1378,6 @@ "version": "5.6.1", "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", - "dev": true, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" @@ -1528,7 +1401,6 @@ "version": "14.2.3", "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", - "dev": true, "dependencies": { "attr-accept": "^2.2.2", "file-selector": "^0.6.0", @@ -1544,14 +1416,12 @@ "node_modules/react-fast-compare": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", - "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", - "dev": true + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" }, "node_modules/react-focus-lock": { "version": "2.9.4", "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.4.tgz", "integrity": "sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg==", - "dev": true, "dependencies": { "@babel/runtime": "^7.0.0", "focus-lock": "^0.11.6", @@ -1574,7 +1444,6 @@ "version": "3.8.1", "resolved": "https://registry.npmjs.org/react-focus-on/-/react-focus-on-3.8.1.tgz", "integrity": "sha512-fQcBx+SZMgXoRL+69r5+ic4bdVgqaCeKeoFPra8yhcSuL/3unWavfdirEFBGgH71K+RiocMTS6DETHcX0SlOZg==", - "dev": true, "dependencies": { "aria-hidden": "^1.2.2", "react-focus-lock": "^2.9.2", @@ -1601,7 +1470,6 @@ "version": "5.25.1", "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.25.1.tgz", "integrity": "sha512-pkjdQDvpJROoXLMltkP/5mZb0/XqrqLoPGKUCfbdkP8m6U9xbK40K51Wu+a4aQqTEvEK5lHBk0fWzUV72SJ3Hg==", - "dev": true, "peer": true, "dependencies": { "@formatjs/ecma402-abstract": "1.11.4", @@ -1633,14 +1501,12 @@ "node_modules/react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", - "dev": true + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "node_modules/react-loading-skeleton": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.3.1.tgz", "integrity": "sha512-NilqqwMh2v9omN7LteiDloEVpFyMIa0VGqF+ukqp0ncVlYu1sKYbYGX9JEl+GtOT9TKsh04zCHAbavnQ2USldA==", - "dev": true, "peerDependencies": { "react": ">=16.8.0" } @@ -1649,7 +1515,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz", "integrity": "sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==", - "dev": true, "dependencies": { "@babel/runtime": "^7.13.8", "@popperjs/core": "^2.11.6", @@ -1669,7 +1534,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", - "dev": true, "dependencies": { "react-fast-compare": "^3.0.1", "warning": "^4.0.2" @@ -1683,14 +1547,12 @@ "node_modules/react-proptype-conditional-require": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz", - "integrity": "sha512-nopsRn7KnGgazBe2c3H2+Kf+Csp6PGDRLiBkYEDMKY8o/EIgft/WnIm/OnAKTawZiLnJXHAqhpFBddvs6NiXlw==", - "dev": true + "integrity": "sha512-nopsRn7KnGgazBe2c3H2+Kf+Csp6PGDRLiBkYEDMKY8o/EIgft/WnIm/OnAKTawZiLnJXHAqhpFBddvs6NiXlw==" }, "node_modules/react-remove-scroll": { "version": "2.5.6", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz", "integrity": "sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==", - "dev": true, "dependencies": { "react-remove-scroll-bar": "^2.3.4", "react-style-singleton": "^2.2.1", @@ -1715,7 +1577,6 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", - "dev": true, "dependencies": { "react-style-singleton": "^2.2.1", "tslib": "^2.0.0" @@ -1737,7 +1598,6 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-8.2.0.tgz", "integrity": "sha512-iagCqVrw4QSjhxKp3I/YK6+ODkWY6G+YPElvdYKiUUbywwh9Ds0M7r26Fj2/7dWFFbOpcGnJE6uE7aMck8j5Qg==", - "dev": true, "dependencies": { "hyphenate-style-name": "^1.0.0", "matchmediaquery": "^0.3.0", @@ -1755,7 +1615,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "dev": true, "dependencies": { "get-nonce": "^1.0.0", "invariant": "^2.2.4", @@ -1778,7 +1637,6 @@ "version": "7.8.0", "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.8.0.tgz", "integrity": "sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==", - "dev": true, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" @@ -1806,7 +1664,6 @@ "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "dev": true, "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -1822,7 +1679,6 @@ "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, "dependencies": { "pify": "^2.3.0" } @@ -1831,7 +1687,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -1843,7 +1698,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -1851,14 +1705,12 @@ "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, "dependencies": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", @@ -1875,7 +1727,6 @@ "version": "1.62.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", - "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -1901,7 +1752,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dev": true, "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -1911,14 +1761,12 @@ "node_modules/shallow-equal": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", - "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==", - "dev": true + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" }, "node_modules/snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dev": true, "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -1928,7 +1776,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1937,7 +1784,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1946,7 +1792,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "dev": true, "engines": { "node": ">=6" } @@ -1954,14 +1799,12 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", - "dev": true, "engines": { "node": ">=4" } @@ -1970,7 +1813,6 @@ "version": "3.8.0", "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-3.8.0.tgz", "integrity": "sha512-wHlB/f5eO3mDcYv6WtOz6gvQC477jBKrwuIXe+PtHskTCBsJdAOvL8hCquczJxDui2TnwpeNE+2msK91JJomZg==", - "dev": true, "dependencies": { "chalk": "^4.0.0", "change-case": "^4.1.2", @@ -1993,7 +1835,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2003,7 +1844,6 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, "engines": { "node": ">= 12" } @@ -2012,7 +1852,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2032,7 +1871,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2044,7 +1882,6 @@ "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, "dependencies": { "has-flag": "^4.0.0" }, @@ -2056,7 +1893,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -2067,20 +1903,17 @@ "node_modules/tabbable": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", - "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==", - "dev": true + "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" }, "node_modules/tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", - "dev": true + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" }, "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, "dependencies": { "is-number": "^7.0.0" }, @@ -2091,14 +1924,12 @@ "node_modules/tslib": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", - "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==", - "dev": true + "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==" }, "node_modules/uncontrollable": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", - "dev": true, "dependencies": { "@babel/runtime": "^7.6.3", "@types/react": ">=16.9.11", @@ -2113,7 +1944,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, "engines": { "node": ">= 10.0.0" } @@ -2122,7 +1952,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -2131,7 +1960,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dev": true, "dependencies": { "tslib": "^2.0.3" } @@ -2140,7 +1968,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", - "dev": true, "dependencies": { "tslib": "^2.0.0" }, @@ -2161,7 +1988,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", - "dev": true, "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" @@ -2182,14 +2008,12 @@ "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 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -2198,7 +2022,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "dev": true, "dependencies": { "loose-envify": "^1.0.0" } @@ -2206,8 +2029,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" } } } diff --git a/example/package.json b/example/package.json index 2ce1aeab5..0a88cde51 100644 --- a/example/package.json +++ b/example/package.json @@ -15,12 +15,12 @@ "author": "", "license": "ISC", "dependencies": { - "react": "^16.14.0", - "react-dom": "^16.14.0" + "@edx/paragon": "21.0.0-alpha.29", + "react": "16.14.0", + "react-dom": "16.14.0" }, "devDependencies": { - "@edx/browserslist-config": "^1.2.0", - "@edx/paragon": "^21.0.0-alpha.29", + "@edx/browserslist-config": "1.2.0", "react-test-renderer": "16.14.0" } } From 5f7d76f030ae4a898368502b25ae4fb387f2df1e Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Mon, 29 May 2023 17:46:58 -0400 Subject: [PATCH 07/23] fix: update based on new schema for paragon-theme.json --- config/data/paragonUtils.js | 27 +++++++++++----- config/jest/setupTest.js | 10 ++++-- example/package-lock.json | 8 ++--- example/package.json | 2 +- example/src/ParagonPreview.jsx | 8 ++--- example/src/__snapshots__/App.test.jsx.snap | 16 ++++++---- .../ParagonWebpackPlugin.js | 31 +++++++++++++++---- 7 files changed, 71 insertions(+), 31 deletions(-) diff --git a/config/data/paragonUtils.js b/config/data/paragonUtils.js index de4d24d83..70f77c94c 100644 --- a/config/data/paragonUtils.js +++ b/config/data/paragonUtils.js @@ -23,10 +23,19 @@ function getParagonVersion(dir) { * @property {string} outputChunkName */ +/** + * @typedef {Object} ParagonThemeVariantCssAsset + * @property {string} filePath + * @property {string} entryName + * @property {string} outputChunkName + * @property {boolean} default + * @property {boolean} dark + */ + /** * @typedef {Object} ParagonThemeCss * @property {ParagonThemeCssAsset} core The metadata about the core Paragon theme CSS - * @property {Object.} variants A collection of theme variants. + * @property {Object.} variants A collection of theme variants. */ /** @@ -41,16 +50,16 @@ function getParagonThemeCss(dir) { } const paragonConfig = JSON.parse(fs.readFileSync(pathToParagonThemeOutput)); const { - core: coreThemePath, - variants: themeVariantPaths, + core: themeCore, + variants: themeVariants, } = paragonConfig?.themeUrls || {}; - const pathToCoreCss = path.resolve(dir, './node_modules/@edx/paragon', 'dist', coreThemePath.minified); + const pathToCoreCss = path.resolve(dir, './node_modules/@edx/paragon', 'dist', themeCore.paths.minified); const coreCssExists = fs.existsSync(pathToCoreCss); - const validThemeVariantPaths = Object.entries(themeVariantPaths || {}).filter(([, value]) => { - const themeVariantCssDefault = path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.default); - const themeVariantCssMinified = path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.minified); + const validThemeVariantPaths = Object.entries(themeVariants || {}).filter(([, value]) => { + const themeVariantCssDefault = path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.paths.default); + const themeVariantCssMinified = path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.paths.minified); return fs.existsSync(themeVariantCssDefault) && fs.existsSync(themeVariantCssMinified); }); @@ -66,9 +75,11 @@ function getParagonThemeCss(dir) { const themeVariantResults = {}; validThemeVariantPaths.forEach(([themeVariant, value]) => { themeVariantResults[themeVariant] = { - filePath: path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.minified), + filePath: path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.paths.minified), entryName: `paragon.theme.variants.${themeVariant}`, outputChunkName: `paragon-theme-variant-${themeVariant}`, + default: value.default, + dark: value.dark, }; }); diff --git a/config/jest/setupTest.js b/config/jest/setupTest.js index 977da6870..705b63863 100644 --- a/config/jest/setupTest.js +++ b/config/jest/setupTest.js @@ -12,9 +12,15 @@ if (fs.existsSync(testEnvFile)) { global.PARAGON = { version: '1.0.0', themeUrls: { - core: 'core.min.css', + core: { + fileName: 'core.min.css', + }, variants: { - light: 'light.min.css', + light: { + filePath: 'light.min.css', + default: true, + dark: false, + }, }, }, }; diff --git a/example/package-lock.json b/example/package-lock.json index d85ead41f..2165a197a 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@edx/paragon": "21.0.0-alpha.29", + "@edx/paragon": "21.0.0-alpha.30", "react": "16.14.0", "react-dom": "16.14.0" }, @@ -95,9 +95,9 @@ "dev": true }, "node_modules/@edx/paragon": { - "version": "21.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-21.0.0-alpha.29.tgz", - "integrity": "sha512-yQPsAqhCiLVdHMMmC5E7glMsZdoXBZwpewEsuOkck2rYTevPStFJ91/5QcSmuhArGDR90AUzXtrVe57J7ONB3A==", + "version": "21.0.0-alpha.30", + "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-21.0.0-alpha.30.tgz", + "integrity": "sha512-95MoV+av6pX97hwmrfgPmc1vSit43CtbA5kbNRY7Vt+Lj38JCzMYFGcG/PdHmSCpFsKG+34rUtB+G4+dbLQH1w==", "dependencies": { "@popperjs/core": "^2.11.4", "bootstrap": "^4.6.2", diff --git a/example/package.json b/example/package.json index 0a88cde51..0f615aeec 100644 --- a/example/package.json +++ b/example/package.json @@ -15,7 +15,7 @@ "author": "", "license": "ISC", "dependencies": { - "@edx/paragon": "21.0.0-alpha.29", + "@edx/paragon": "21.0.0-alpha.30", "react": "16.14.0", "react-dom": "16.14.0" }, diff --git a/example/src/ParagonPreview.jsx b/example/src/ParagonPreview.jsx index 4cd51507a..8dd3ea104 100644 --- a/example/src/ParagonPreview.jsx +++ b/example/src/ParagonPreview.jsx @@ -10,13 +10,13 @@ const ParagonPreview = () => {

Exposed Theme CSS

diff --git a/example/src/__snapshots__/App.test.jsx.snap b/example/src/__snapshots__/App.test.jsx.snap index c94422ebb..5337f52b2 100644 --- a/example/src/__snapshots__/App.test.jsx.snap +++ b/example/src/__snapshots__/App.test.jsx.snap @@ -122,12 +122,10 @@ exports[`Basic test should render 1`] = `
  • - light.min.css - + />
  • @@ -141,9 +139,15 @@ exports[`Basic test should render 1`] = ` { "version": "1.0.0", "themeUrls": { - "core": "core.min.css", + "core": { + "fileName": "core.min.css" + }, "variants": { - "light": "light.min.css" + "light": { + "filePath": "light.min.css", + "default": true, + "dark": false + } } } } diff --git a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js index bb094d5c3..ac2aa8631 100644 --- a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +++ b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js @@ -14,12 +14,18 @@ class ParagonWebpackPlugin { this.version = paragonVersion; this.coreEntryName = undefined; this.themeVariantEntryNames = {}; + if (!paragonThemeCss) { return; } + this.coreEntryName = replacePeriodsWithHyphens(paragonThemeCss.core.entryName); Object.entries(paragonThemeCss.variants).forEach(([key, value]) => { - this.themeVariantEntryNames[key] = replacePeriodsWithHyphens(value.entryName); + this.themeVariantEntryNames[key] = { + entryName: replacePeriodsWithHyphens(value.entryName), + default: value.default, + dark: value.dark, + }; }); } @@ -42,19 +48,32 @@ class ParagonWebpackPlugin { getParagonCssAssetsFromCompilation(compilation) { const paragonAssets = compilation.getAssets().filter(asset => asset.name.includes('paragon') && asset.name.endsWith('.css')); - const coreCssAsset = paragonAssets.find((asset) => asset.name.includes(this.coreEntryName))?.name; + const coreCssAsset = paragonAssets.find((asset) => asset.name.includes(this.coreEntryName)); const themeVariantCssAssets = {}; - Object.entries(this.themeVariantEntryNames).forEach(([themeVariant, themeVariantEntryName]) => { - const foundThemeVariantAsset = paragonAssets.find((asset) => asset.name.includes(themeVariantEntryName)); + Object.entries(this.themeVariantEntryNames).forEach(([themeVariant, value]) => { + const foundThemeVariantAsset = paragonAssets.find((asset) => asset.name.includes(value.entryName)); if (!foundThemeVariantAsset) { return; } - themeVariantCssAssets[themeVariant] = foundThemeVariantAsset.name; + themeVariantCssAssets[themeVariant] = { + fileName: foundThemeVariantAsset.name, + default: value.default, + dark: value.dark, + }; }); + if (!coreCssAsset || !Object.keys(themeVariantCssAssets).length === 0) { + return { + coreCssAsset: undefined, + themeVariantCssAssets: {}, + }; + } + return { - coreCssAsset, + coreCssAsset: { + fileName: coreCssAsset?.name, + }, themeVariantCssAssets, }; } From 2a78f67a42c903349f7867ad71c5a148db71fe65 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Mon, 29 May 2023 18:44:48 -0400 Subject: [PATCH 08/23] fix: update setupTest.js --- config/jest/setupTest.js | 2 +- example/src/__snapshots__/App.test.jsx.snap | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/config/jest/setupTest.js b/config/jest/setupTest.js index 705b63863..693949937 100644 --- a/config/jest/setupTest.js +++ b/config/jest/setupTest.js @@ -17,7 +17,7 @@ global.PARAGON = { }, variants: { light: { - filePath: 'light.min.css', + fileName: 'light.min.css', default: true, dark: false, }, diff --git a/example/src/__snapshots__/App.test.jsx.snap b/example/src/__snapshots__/App.test.jsx.snap index 5337f52b2..a125e1d86 100644 --- a/example/src/__snapshots__/App.test.jsx.snap +++ b/example/src/__snapshots__/App.test.jsx.snap @@ -122,10 +122,12 @@ exports[`Basic test should render 1`] = `
  • + > + light.min.css +
  • @@ -144,7 +146,7 @@ exports[`Basic test should render 1`] = ` }, "variants": { "light": { - "filePath": "light.min.css", + "fileName": "light.min.css", "default": true, "dark": false } From d987b083a5240f0a5119c0143342d8a5ae9ace73 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Sat, 3 Jun 2023 07:50:21 -0400 Subject: [PATCH 09/23] chore: clean up --- config/data/paragonUtils.js | 7 +++- config/webpack.common.config.js | 7 ++++ config/webpack.prod.config.js | 5 +++ example/package-lock.json | 70 +++++++++++++++++++++------------ example/package.json | 2 +- package-lock.json | 69 ++++++++++++++++++++++++++++++++ package.json | 1 + 7 files changed, 133 insertions(+), 28 deletions(-) diff --git a/config/data/paragonUtils.js b/config/data/paragonUtils.js index 70f77c94c..bef32c02e 100644 --- a/config/data/paragonUtils.js +++ b/config/data/paragonUtils.js @@ -134,7 +134,12 @@ function getParagonCacheGroups(paragonThemeCss) { /** * @param {ParagonThemeCss} paragonThemeCss The Paragon theme CSS metadata. - * @returns {Object.} The entry points for the Paragon theme CSS. + * @returns {Object.} The entry points for the Paragon theme CSS. Example: ``` + * { + * "paragon.theme.core": "/path/to/node_modules/@edx/paragon/dist/core.min.css", + * "paragon.theme.variants.light": "/path/to/node_modules/@edx/paragon/dist/light.min.css" + * } + * ``` */ function getParagonEntryPoints(paragonThemeCss) { const entryPoints = {}; diff --git a/config/webpack.common.config.js b/config/webpack.common.config.js index 7137b839e..88110ee81 100644 --- a/config/webpack.common.config.js +++ b/config/webpack.common.config.js @@ -13,6 +13,13 @@ const paragonThemeCss = getParagonThemeCss(process.cwd()); module.exports = { entry: { app: path.resolve(process.cwd(), './src/index'), + /** + * The entry points for the Paragon theme CSS. Example: ``` + * { + * "paragon.theme.core": "/path/to/node_modules/@edx/paragon/dist/core.min.css", + * "paragon.theme.variants.light": "/path/to/node_modules/@edx/paragon/dist/light.min.css" + * } + */ ...getParagonEntryPoints(paragonThemeCss), }, output: { diff --git a/config/webpack.prod.config.js b/config/webpack.prod.config.js index bee29699b..82bebe31e 100644 --- a/config/webpack.prod.config.js +++ b/config/webpack.prod.config.js @@ -16,6 +16,7 @@ const path = require('path'); const PostCssAutoprefixerPlugin = require('autoprefixer'); const PostCssRTLCSS = require('postcss-rtlcss'); const PostCssCustomMediaCSS = require('postcss-custom-media'); +const CompressionPlugin = require('compression-webpack-plugin'); // Reduce CSS file size by ~70% const purgecss = require('@fullhuman/postcss-purgecss'); @@ -210,6 +211,10 @@ module.exports = merge(commonConfig, { path: path.resolve(process.cwd(), '.env'), systemvars: true, }), + new CompressionPlugin({ + algorithm: 'gzip', + test: /.js$|.css$/, + }), new BundleAnalyzerPlugin({ analyzerMode: 'static', openAnalyzer: false, diff --git a/example/package-lock.json b/example/package-lock.json index 2165a197a..0b3fb1c23 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@edx/paragon": "21.0.0-alpha.30", + "@edx/paragon": "^21.0.0-alpha.31", "react": "16.14.0", "react-dom": "16.14.0" }, @@ -46,16 +46,22 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.1.tgz", - "integrity": "sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.2.0.tgz", + "integrity": "sha512-9BoQ/jSrPq4vv3b9jjLW+PNNv56KlDH5JMx5yASSNrCtvq70FCNZUjXRvbCeR9hYj9ZyhURtqpU/RFIgg6kiOw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "engines": { "node": "^14 || ^16 || >=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, "peerDependencies": { "@csstools/css-tokenizer": "^2.1.1" } @@ -73,16 +79,22 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.4.tgz", - "integrity": "sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.0.tgz", + "integrity": "sha512-MXkR+TeaS2q9IkpyO6jVCdtA/bfpABJxIrfkLswThFN8EZZgI2RfAHhm6sDNDuYV25d5+b8Lj1fpTccIcSLPsQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "engines": { "node": "^14 || ^16 || >=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, "peerDependencies": { "@csstools/css-parser-algorithms": "^2.1.1", "@csstools/css-tokenizer": "^2.1.1" @@ -95,9 +107,9 @@ "dev": true }, "node_modules/@edx/paragon": { - "version": "21.0.0-alpha.30", - "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-21.0.0-alpha.30.tgz", - "integrity": "sha512-95MoV+av6pX97hwmrfgPmc1vSit43CtbA5kbNRY7Vt+Lj38JCzMYFGcG/PdHmSCpFsKG+34rUtB+G4+dbLQH1w==", + "version": "21.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-21.0.0-alpha.31.tgz", + "integrity": "sha512-6iEwaLvyEn8+pMNO8Vuh9/xkaGK+i32q1bVoy0OeuKLwCVb6dJRwIMhOFQSQdSQ5KhAUBpIvPQD8Cm1PxyvYcw==", "dependencies": { "@popperjs/core": "^2.11.4", "bootstrap": "^4.6.2", @@ -1184,22 +1196,28 @@ } }, "node_modules/postcss-custom-media": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-9.1.3.tgz", - "integrity": "sha512-W1C4Fu6KAZ7sKYQCuGMr8gyaE4BtjTQGPLVS4m0WCaWM6l7PgVbvmDeb4ClBc5R/7kdwESYf0hdxGtEPhi9CLA==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-9.1.4.tgz", + "integrity": "sha512-4A7WEG3iIyKwfpxL5bkuSlHoHHGRTHl0212Z3uvpwJPyVfZJlkZAQNNgVC+oogrJgksDnfKyuuMbG6HafZPW8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "dependencies": { "@csstools/cascade-layer-name-parser": "^1.0.2", "@csstools/css-parser-algorithms": "^2.1.1", "@csstools/css-tokenizer": "^2.1.1", - "@csstools/media-query-list-parser": "^2.0.4" + "@csstools/media-query-list-parser": "^2.1.0" }, "engines": { "node": "^14 || ^16 || >=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, "peerDependencies": { "postcss": "^8.4" } diff --git a/example/package.json b/example/package.json index 0f615aeec..18f0757a0 100644 --- a/example/package.json +++ b/example/package.json @@ -15,7 +15,7 @@ "author": "", "license": "ISC", "dependencies": { - "@edx/paragon": "21.0.0-alpha.30", + "@edx/paragon": "^21.0.0-alpha.31", "react": "16.14.0", "react-dom": "16.14.0" }, diff --git a/package-lock.json b/package-lock.json index 4fd0acd2e..4fd031898 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,6 +29,7 @@ "babel-plugin-transform-imports": "2.0.0", "babel-polyfill": "6.26.0", "clean-webpack-plugin": "4.0.0", + "compression-webpack-plugin": "^10.0.0", "css-loader": "5.2.7", "cssnano": "6.0.1", "dotenv": "8.6.0", @@ -5452,6 +5453,74 @@ "node": ">= 0.8.0" } }, + "node_modules/compression-webpack-plugin": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-10.0.0.tgz", + "integrity": "sha512-wLXLIBwpul/ALcm7Aj+69X0pYT3BYt6DdPn3qrgBIh9YejV9Bju9ShhlAsjujLyWMo6SAweFIWaUoFmXZNuNrg==", + "dependencies": { + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/compression-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/compression-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/compression-webpack-plugin/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==" + }, + "node_modules/compression-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", + "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", diff --git a/package.json b/package.json index dee108508..3969370a9 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "babel-plugin-transform-imports": "2.0.0", "babel-polyfill": "6.26.0", "clean-webpack-plugin": "4.0.0", + "compression-webpack-plugin": "^10.0.0", "css-loader": "5.2.7", "cssnano": "6.0.1", "dotenv": "8.6.0", From cda3812d62221a312bc8f3749c70a7b8dbcfe6ea Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Sat, 3 Jun 2023 08:35:46 -0400 Subject: [PATCH 10/23] chore: remove compressionplugin --- config/webpack.prod.config.js | 4 - example/package-lock.json | 1012 ++------------------------------- example/package.json | 2 +- 3 files changed, 46 insertions(+), 972 deletions(-) diff --git a/config/webpack.prod.config.js b/config/webpack.prod.config.js index 82bebe31e..ba84996a6 100644 --- a/config/webpack.prod.config.js +++ b/config/webpack.prod.config.js @@ -211,10 +211,6 @@ module.exports = merge(commonConfig, { path: path.resolve(process.cwd(), '.env'), systemvars: true, }), - new CompressionPlugin({ - algorithm: 'gzip', - test: /.js$|.css$/, - }), new BundleAnalyzerPlugin({ analyzerMode: 'static', openAnalyzer: false, diff --git a/example/package-lock.json b/example/package-lock.json index 0b3fb1c23..cdf5bcd9a 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@edx/paragon": "^21.0.0-alpha.31", + "@edx/paragon": "20.43.0", "react": "16.14.0", "react-dom": "16.14.0" }, @@ -29,77 +29,6 @@ "node": ">=6.9.0" } }, - "node_modules/@csstools/cascade-layer-name-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.2.tgz", - "integrity": "sha512-xm7Mgwej/wBfLoK0K5LfntmPJzoULayl1XZY9JYgQgT29JiqNw++sLnx95u5y9zCihblzkyaRYJrsRMhIBzRdg==", - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.1.1", - "@csstools/css-tokenizer": "^2.1.1" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.2.0.tgz", - "integrity": "sha512-9BoQ/jSrPq4vv3b9jjLW+PNNv56KlDH5JMx5yASSNrCtvq70FCNZUjXRvbCeR9hYj9ZyhURtqpU/RFIgg6kiOw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^2.1.1" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz", - "integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==", - "engines": { - "node": "^14 || ^16 || >=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - }, - "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.0.tgz", - "integrity": "sha512-MXkR+TeaS2q9IkpyO6jVCdtA/bfpABJxIrfkLswThFN8EZZgI2RfAHhm6sDNDuYV25d5+b8Lj1fpTccIcSLPsQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.1.1", - "@csstools/css-tokenizer": "^2.1.1" - } - }, "node_modules/@edx/browserslist-config": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@edx/browserslist-config/-/browserslist-config-1.2.0.tgz", @@ -107,26 +36,21 @@ "dev": true }, "node_modules/@edx/paragon": { - "version": "21.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-21.0.0-alpha.31.tgz", - "integrity": "sha512-6iEwaLvyEn8+pMNO8Vuh9/xkaGK+i32q1bVoy0OeuKLwCVb6dJRwIMhOFQSQdSQ5KhAUBpIvPQD8Cm1PxyvYcw==", + "version": "20.43.0", + "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.43.0.tgz", + "integrity": "sha512-ErgTL2k8DrV0Xp+2c81YBn1ekdHa6VAtSLMpOw/BI6RN6hQ/AaCSSLxVyvq9sVpmNSvKmOd/tPAY0aBwA5hSUA==", "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.1.1", + "@fortawesome/react-fontawesome": "^0.1.18", "@popperjs/core": "^2.11.4", "bootstrap": "^4.6.2", - "chroma-js": "^2.4.2", "classnames": "^2.3.1", - "commander": "^9.4.1", "email-prop-type": "^3.0.0", "file-selector": "^0.6.0", + "font-awesome": "^4.7.0", "glob": "^8.0.3", "lodash.uniqby": "^4.7.0", "mailto-link": "^2.0.0", - "postcss": "^8.4.21", - "postcss-combine-duplicated-selectors": "^10.0.3", - "postcss-custom-media": "^9.1.2", - "postcss-import": "^15.1.0", - "postcss-map": "^0.11.0", - "postcss-minify": "^1.1.0", "prop-types": "^15.8.1", "react-bootstrap": "^1.6.5", "react-colorful": "^5.6.1", @@ -138,17 +62,10 @@ "react-responsive": "^8.2.0", "react-table": "^7.7.0", "react-transition-group": "^4.4.2", - "sass": "^1.58.3", - "style-dictionary": "^3.7.1", "tabbable": "^5.3.3", "uncontrollable": "^7.2.1", "uuid": "^9.0.0" }, - "bin": { - "build-design-tokens": "tokens/build-tokens.js", - "build-scss": "build-scss.js", - "replace-scss-with-css": "tokens/replace-variables.js" - }, "peerDependencies": { "react": "^16.8.6 || ^17.0.0", "react-dom": "^16.8.6 || ^17.0.0", @@ -249,6 +166,39 @@ "tslib": "^2.1.0" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz", + "integrity": "sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz", + "integrity": "sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.4.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.19.tgz", + "integrity": "sha512-Hyb+lB8T18cvLNX0S3llz7PcSOAJMLwiVKBuuzwM/nI5uoBw+gQjnf9il0fR1C3DKOI5Kc79pkJ4/xB0Uw9aFQ==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.x" + } + }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -325,40 +275,6 @@ "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" }, - "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==", - "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==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/aria-hidden": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", @@ -388,14 +304,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, "node_modules/bootstrap": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", @@ -423,36 +331,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, "node_modules/cast-array": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cast-array/-/cast-array-1.0.1.tgz", @@ -461,131 +339,16 @@ "isarray": "0.0.1" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "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" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chroma-js": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", - "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" - }, "node_modules/classnames": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" }, - "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==", - "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==" - }, - "node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, "node_modules/css-mediaquery": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==" }, - "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==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/csstype": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", @@ -621,15 +384,6 @@ "csstype": "^3.0.2" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/email-prop-type": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/email-prop-type/-/email-prop-type-3.0.1.tgz", @@ -646,18 +400,6 @@ "node": ">4.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/file-selector": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", @@ -669,17 +411,6 @@ "node": ">= 12" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/filter-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", @@ -699,17 +430,12 @@ "node": ">=10" } }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, + "node_modules/font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==", "engines": { - "node": ">=12" + "node": ">=0.10.3" } }, "node_modules/fs.realpath": { @@ -717,24 +443,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, "node_modules/get-nonce": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", @@ -761,50 +469,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "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==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -819,11 +483,6 @@ "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" }, - "node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==" - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -858,55 +517,6 @@ "loose-envify": "^1.0.0" } }, - "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==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "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==", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -923,50 +533,6 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "node_modules/lodash.uniqby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", @@ -983,14 +549,6 @@ "loose-envify": "cli.js" } }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/mailto-link": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mailto-link/-/mailto-link-2.0.0.tgz", @@ -1024,40 +582,6 @@ "node": ">=10" } }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -1079,70 +603,6 @@ "wrappy": "1" } }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "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==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/popper.js": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", @@ -1154,153 +614,6 @@ "url": "https://opencollective.com/popperjs" } }, - "node_modules/postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", - "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" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-combine-duplicated-selectors": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-10.0.3.tgz", - "integrity": "sha512-IP0BmwFloCskv7DV7xqvzDXqMHpwdczJa6ZvIW8abgHdcIHs9mCJX2ltFhu3EwA51ozp13DByng30+Ke+eIExA==", - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-custom-media": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-9.1.4.tgz", - "integrity": "sha512-4A7WEG3iIyKwfpxL5bkuSlHoHHGRTHl0212Z3uvpwJPyVfZJlkZAQNNgVC+oogrJgksDnfKyuuMbG6HafZPW8Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "dependencies": { - "@csstools/cascade-layer-name-parser": "^1.0.2", - "@csstools/css-parser-algorithms": "^2.1.1", - "@csstools/css-tokenizer": "^2.1.1", - "@csstools/media-query-list-parser": "^2.1.0" - }, - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-map": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/postcss-map/-/postcss-map-0.11.0.tgz", - "integrity": "sha512-cgHYZrH9aAMds90upYUPhYz8xnAcRD45SwuNns/nQHONIrPQDhpwk3JLsAQGOndQxnRVXfB6nB+3WqSMy8fqlA==", - "dependencies": { - "js-yaml": "^3.12.0", - "postcss": "^7.0.2", - "reduce-function-call": "^1.0.1" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-map/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/postcss-map/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify/-/postcss-minify-1.1.0.tgz", - "integrity": "sha512-9D64ueIW0DL2FdLajQTlXrnTN8Ox9NjuXqigKMmB819RhdClNPYx5Zp3i5x0ghjjy3vGrLBBYEYvJjY/1eMNbw==", - "dependencies": { - "postcss-selector-parser": "^6.0", - "postcss-value-parser": "^4.1" - }, - "peerDependencies": { - "postcss": "^8.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "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==" - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -1693,70 +1006,11 @@ "react-dom": ">=16.6.0" } }, - "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==", - "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==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reduce-function-call": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", - "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sass": { - "version": "1.62.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", - "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/scheduler": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", @@ -1766,46 +1020,11 @@ "object-assign": "^4.1.1" } }, - "node_modules/sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, "node_modules/shallow-equal": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", @@ -1814,11 +1033,6 @@ "node": ">=6" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -1827,118 +1041,11 @@ "node": ">=4" } }, - "node_modules/style-dictionary": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-3.8.0.tgz", - "integrity": "sha512-wHlB/f5eO3mDcYv6WtOz6gvQC477jBKrwuIXe+PtHskTCBsJdAOvL8hCquczJxDui2TnwpeNE+2msK91JJomZg==", - "dependencies": { - "chalk": "^4.0.0", - "change-case": "^4.1.2", - "commander": "^8.3.0", - "fs-extra": "^10.0.0", - "glob": "^7.2.0", - "json5": "^2.2.2", - "jsonc-parser": "^3.0.0", - "lodash": "^4.17.15", - "tinycolor2": "^1.4.1" - }, - "bin": { - "style-dictionary": "bin/style-dictionary" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/style-dictionary/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/style-dictionary/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/style-dictionary/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/style-dictionary/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/tabbable": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" }, - "node_modules/tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" - }, - "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==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/tslib": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz", @@ -1958,30 +1065,6 @@ "react": ">=15.0.0" } }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/use-callback-ref": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", @@ -2023,11 +1106,6 @@ } } }, - "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==" - }, "node_modules/uuid": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", diff --git a/example/package.json b/example/package.json index 18f0757a0..a6eb882ca 100644 --- a/example/package.json +++ b/example/package.json @@ -15,7 +15,7 @@ "author": "", "license": "ISC", "dependencies": { - "@edx/paragon": "^21.0.0-alpha.31", + "@edx/paragon": "20.43.0", "react": "16.14.0", "react-dom": "16.14.0" }, From 0e0dfcc1211647331120272a7cd9c79d1acb7644 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Sat, 3 Jun 2023 10:20:41 -0400 Subject: [PATCH 11/23] chore: quality --- config/webpack.prod.config.js | 1 - 1 file changed, 1 deletion(-) diff --git a/config/webpack.prod.config.js b/config/webpack.prod.config.js index ba84996a6..bee29699b 100644 --- a/config/webpack.prod.config.js +++ b/config/webpack.prod.config.js @@ -16,7 +16,6 @@ const path = require('path'); const PostCssAutoprefixerPlugin = require('autoprefixer'); const PostCssRTLCSS = require('postcss-rtlcss'); const PostCssCustomMediaCSS = require('postcss-custom-media'); -const CompressionPlugin = require('compression-webpack-plugin'); // Reduce CSS file size by ~70% const purgecss = require('@fullhuman/postcss-purgecss'); From 86bc18af55823040e7144ed67c5fafc414ea225b Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Sun, 4 Jun 2023 12:31:01 -0400 Subject: [PATCH 12/23] fix: rename paragon-theme.json to theme-urls.json --- config/data/paragonUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/data/paragonUtils.js b/config/data/paragonUtils.js index bef32c02e..2d858d27e 100644 --- a/config/data/paragonUtils.js +++ b/config/data/paragonUtils.js @@ -44,7 +44,7 @@ function getParagonVersion(dir) { * @returns {ParagonThemeCss} */ function getParagonThemeCss(dir) { - const pathToParagonThemeOutput = path.resolve(dir, './node_modules/@edx/paragon', 'dist', 'paragon-theme.json'); + const pathToParagonThemeOutput = path.resolve(dir, './node_modules/@edx/paragon', 'dist', 'theme-urls.json'); if (!fs.existsSync(pathToParagonThemeOutput)) { return undefined; } From 74a0a4fd60a18d8ce776dd4a898faa728d99da59 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Sun, 4 Jun 2023 13:05:25 -0400 Subject: [PATCH 13/23] chore: uninstall unused node_module --- package-lock.json | 69 ----------------------------------------------- package.json | 1 - 2 files changed, 70 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4fd031898..4fd0acd2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,6 @@ "babel-plugin-transform-imports": "2.0.0", "babel-polyfill": "6.26.0", "clean-webpack-plugin": "4.0.0", - "compression-webpack-plugin": "^10.0.0", "css-loader": "5.2.7", "cssnano": "6.0.1", "dotenv": "8.6.0", @@ -5453,74 +5452,6 @@ "node": ">= 0.8.0" } }, - "node_modules/compression-webpack-plugin": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-10.0.0.tgz", - "integrity": "sha512-wLXLIBwpul/ALcm7Aj+69X0pYT3BYt6DdPn3qrgBIh9YejV9Bju9ShhlAsjujLyWMo6SAweFIWaUoFmXZNuNrg==", - "dependencies": { - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/compression-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/compression-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/compression-webpack-plugin/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==" - }, - "node_modules/compression-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", diff --git a/package.json b/package.json index 3969370a9..dee108508 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ "babel-plugin-transform-imports": "2.0.0", "babel-polyfill": "6.26.0", "clean-webpack-plugin": "4.0.0", - "compression-webpack-plugin": "^10.0.0", "css-loader": "5.2.7", "cssnano": "6.0.1", "dotenv": "8.6.0", From 4daff048466ff8886c693df98235ac7a20f66ea8 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Sun, 4 Jun 2023 18:39:34 -0400 Subject: [PATCH 14/23] feat: add @edx/brand version and urls to PARAGON_THEME global variable --- config/.eslintrc.js | 2 +- config/data/paragonUtils.js | 27 ++-- config/webpack.common.config.js | 10 ++ config/webpack.dev.config.js | 2 +- example/package-lock.json | 7 ++ example/package.json | 1 + example/src/ParagonPreview.jsx | 26 ++-- .../ParagonWebpackPlugin.js | 118 ++++++++++++------ 8 files changed, 135 insertions(+), 58 deletions(-) diff --git a/config/.eslintrc.js b/config/.eslintrc.js index 0451faf82..910b8f8b0 100644 --- a/config/.eslintrc.js +++ b/config/.eslintrc.js @@ -38,7 +38,7 @@ module.exports = { }, globals: { newrelic: false, - PARAGON: false, + PARAGON_THEME: false, }, ignorePatterns: [ 'module.config.js', diff --git a/config/data/paragonUtils.js b/config/data/paragonUtils.js index 2d858d27e..653f6227e 100644 --- a/config/data/paragonUtils.js +++ b/config/data/paragonUtils.js @@ -8,8 +8,9 @@ const fs = require('fs'); * @param {string} dir Path to directory containing `node_modules`. * @returns {string} Paragon dependency version of the consuming application */ -function getParagonVersion(dir) { - const pathToPackageJson = `${dir}/node_modules/@edx/paragon/package.json`; +function getParagonVersion(dir, { isBrandOverride = false } = {}) { + const npmPackageName = isBrandOverride ? '@edx/brand' : '@edx/paragon'; + const pathToPackageJson = `${dir}/node_modules/${npmPackageName}/package.json`; if (!fs.existsSync(pathToPackageJson)) { return undefined; } @@ -43,8 +44,10 @@ function getParagonVersion(dir) { * @param {string} dir Path to directory containing `node_modules`. * @returns {ParagonThemeCss} */ -function getParagonThemeCss(dir) { - const pathToParagonThemeOutput = path.resolve(dir, './node_modules/@edx/paragon', 'dist', 'theme-urls.json'); +function getParagonThemeCss(dir, { isBrandOverride = false } = {}) { + const npmPackageName = isBrandOverride ? '@edx/brand' : '@edx/paragon'; + const pathToParagonThemeOutput = path.resolve(dir, 'node_modules', npmPackageName, 'dist', 'theme-urls.json'); + if (!fs.existsSync(pathToParagonThemeOutput)) { return undefined; } @@ -54,12 +57,12 @@ function getParagonThemeCss(dir) { variants: themeVariants, } = paragonConfig?.themeUrls || {}; - const pathToCoreCss = path.resolve(dir, './node_modules/@edx/paragon', 'dist', themeCore.paths.minified); + const pathToCoreCss = path.resolve(dir, 'node_modules', npmPackageName, 'dist', themeCore.paths.minified); const coreCssExists = fs.existsSync(pathToCoreCss); const validThemeVariantPaths = Object.entries(themeVariants || {}).filter(([, value]) => { - const themeVariantCssDefault = path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.paths.default); - const themeVariantCssMinified = path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.paths.minified); + const themeVariantCssDefault = path.resolve(dir, 'node_modules', npmPackageName, 'dist', value.paths.default); + const themeVariantCssMinified = path.resolve(dir, 'node_modules', npmPackageName, 'dist', value.paths.minified); return fs.existsSync(themeVariantCssDefault) && fs.existsSync(themeVariantCssMinified); }); @@ -68,16 +71,16 @@ function getParagonThemeCss(dir) { } const coreResult = { filePath: path.resolve(dir, pathToCoreCss), - entryName: 'paragon.theme.core', - outputChunkName: 'paragon-theme-core', + entryName: isBrandOverride ? 'brand.theme.core' : 'paragon.theme.core', + outputChunkName: isBrandOverride ? 'brand-theme-core' : 'paragon-theme-core', }; const themeVariantResults = {}; validThemeVariantPaths.forEach(([themeVariant, value]) => { themeVariantResults[themeVariant] = { - filePath: path.resolve(dir, './node_modules/@edx/paragon', 'dist', value.paths.minified), - entryName: `paragon.theme.variants.${themeVariant}`, - outputChunkName: `paragon-theme-variant-${themeVariant}`, + filePath: path.resolve(dir, 'node_modules', npmPackageName, 'dist', value.paths.minified), + entryName: isBrandOverride ? `brand.theme.variants.${themeVariant}` : `paragon.theme.variants.${themeVariant}`, + outputChunkName: isBrandOverride ? `brand-theme-variant-${themeVariant}` : `paragon-theme-variant-${themeVariant}`, default: value.default, dark: value.dark, }; diff --git a/config/webpack.common.config.js b/config/webpack.common.config.js index 88110ee81..75ab682e9 100644 --- a/config/webpack.common.config.js +++ b/config/webpack.common.config.js @@ -9,6 +9,7 @@ const { } = require('./data/paragonUtils'); const paragonThemeCss = getParagonThemeCss(process.cwd()); +const brandThemeCss = getParagonThemeCss(process.cwd(), { isBrandOverride: true }); module.exports = { entry: { @@ -21,6 +22,14 @@ module.exports = { * } */ ...getParagonEntryPoints(paragonThemeCss), + /** + * The entry points for the brand theme CSS. Example: ``` + * { + * "paragon.theme.core": "/path/to/node_modules/@edx/brand/dist/core.min.css", + * "paragon.theme.variants.light": "/path/to/node_modules/@edx/brand/dist/light.min.css" + * } + */ + ...getParagonEntryPoints(brandThemeCss), }, output: { path: path.resolve(process.cwd(), './dist'), @@ -42,6 +51,7 @@ module.exports = { chunks: 'all', cacheGroups: { ...getParagonCacheGroups(paragonThemeCss), + ...getParagonCacheGroups(brandThemeCss), }, }, }, diff --git a/config/webpack.dev.config.js b/config/webpack.dev.config.js index 36a2879bc..bc2bb2402 100644 --- a/config/webpack.dev.config.js +++ b/config/webpack.dev.config.js @@ -109,7 +109,7 @@ module.exports = merge(commonConfig, { test: /(.scss|.css)$/, oneOf: [ { - resource: /paragon/, + resource: /(@edx\/paragon|@edx\/brand)/, use: [ MiniCssExtractPlugin.loader, ...getStyleUseConfig(), diff --git a/example/package-lock.json b/example/package-lock.json index cdf5bcd9a..2ed1d1753 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@edx/brand": "npm:@edx/brand-openedx@1.2.0", "@edx/paragon": "20.43.0", "react": "16.14.0", "react-dom": "16.14.0" @@ -29,6 +30,12 @@ "node": ">=6.9.0" } }, + "node_modules/@edx/brand": { + "name": "@edx/brand-openedx", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@edx/brand-openedx/-/brand-openedx-1.2.0.tgz", + "integrity": "sha512-r4PDN3rCgDsLovW44ayxoNNHgG5I4Rvss6MG5CrQEX4oW8YhQVEod+jJtwR5vi0mFLN2GIaMlDpd7iIy03VqXg==" + }, "node_modules/@edx/browserslist-config": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@edx/browserslist-config/-/browserslist-config-1.2.0.tgz", diff --git a/example/package.json b/example/package.json index a6eb882ca..eaa871268 100644 --- a/example/package.json +++ b/example/package.json @@ -15,6 +15,7 @@ "author": "", "license": "ISC", "dependencies": { + "@edx/brand": "npm:@edx/brand-openedx@1.2.0", "@edx/paragon": "20.43.0", "react": "16.14.0", "react-dom": "16.14.0" diff --git a/example/src/ParagonPreview.jsx b/example/src/ParagonPreview.jsx index 8dd3ea104..118c72e59 100644 --- a/example/src/ParagonPreview.jsx +++ b/example/src/ParagonPreview.jsx @@ -1,27 +1,37 @@ import React from 'react'; const ParagonPreview = () => { - if (!PARAGON) { + if (!PARAGON_THEME) { return null; } return ( <>

    Paragon

    -

    Exposed Theme CSS

    +

    Exposed theme CSS files

    -

    Contents of PARAGON global variable

    -
    {JSON.stringify(PARAGON, null, 2)}
    +

    Contents of PARAGON_THEME global variable

    +
    {JSON.stringify(PARAGON_THEME, null, 2)}
    ); }; diff --git a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js index ac2aa8631..7f75fe457 100644 --- a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +++ b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js @@ -9,24 +9,50 @@ const { const paragonVersion = getParagonVersion(process.cwd()); const paragonThemeCss = getParagonThemeCss(process.cwd()); +const brandVersion = getParagonVersion(process.cwd(), { isBrandOverride: true }); +const brandThemeCss = getParagonThemeCss(process.cwd(), { isBrandOverride: true }); + class ParagonWebpackPlugin { constructor() { - this.version = paragonVersion; - this.coreEntryName = undefined; - this.themeVariantEntryNames = {}; + this.paragon = { + version: paragonVersion, + coreEntryName: undefined, + themeVariantEntryNames: {}, + }; - if (!paragonThemeCss) { + this.brand = { + version: brandVersion, + coreEntryName: undefined, + themeVariantEntryNames: {}, + }; + + if (!paragonThemeCss && !brandThemeCss) { return; } - this.coreEntryName = replacePeriodsWithHyphens(paragonThemeCss.core.entryName); - Object.entries(paragonThemeCss.variants).forEach(([key, value]) => { - this.themeVariantEntryNames[key] = { - entryName: replacePeriodsWithHyphens(value.entryName), - default: value.default, - dark: value.dark, - }; - }); + if (paragonThemeCss) { + // Core Paragon + this.paragon.coreEntryName = replacePeriodsWithHyphens(paragonThemeCss.core.entryName); + Object.entries(paragonThemeCss.variants).forEach(([key, value]) => { + this.paragon.themeVariantEntryNames[key] = { + entryName: replacePeriodsWithHyphens(value.entryName), + default: value.default, + dark: value.dark, + }; + }); + } + + if (brandThemeCss) { + // `@edx/brand` overrides + this.brand.coreEntryName = replacePeriodsWithHyphens(brandThemeCss.core.entryName); + Object.entries(brandThemeCss.variants).forEach(([key, value]) => { + this.brand.themeVariantEntryNames[key] = { + entryName: replacePeriodsWithHyphens(value.entryName), + default: value.default, + dark: value.dark, + }; + }); + } } logger(message) { @@ -46,12 +72,13 @@ class ParagonWebpackPlugin { return null; } - getParagonCssAssetsFromCompilation(compilation) { - const paragonAssets = compilation.getAssets().filter(asset => asset.name.includes('paragon') && asset.name.endsWith('.css')); - const coreCssAsset = paragonAssets.find((asset) => asset.name.includes(this.coreEntryName)); + getParagonCssAssetsFromCompilation(compilation, { isBrandOverride = false } = {}) { + const assetSubstring = isBrandOverride ? 'brand' : 'paragon'; + const paragonAssets = compilation.getAssets().filter(asset => asset.name.includes(assetSubstring) && asset.name.endsWith('.css')); + const coreCssAsset = paragonAssets.find((asset) => asset.name.includes(this[assetSubstring].coreEntryName)); const themeVariantCssAssets = {}; - Object.entries(this.themeVariantEntryNames).forEach(([themeVariant, value]) => { + Object.entries(this[assetSubstring].themeVariantEntryNames).forEach(([themeVariant, value]) => { const foundThemeVariantAsset = paragonAssets.find((asset) => asset.name.includes(value.entryName)); if (!foundThemeVariantAsset) { return; @@ -121,7 +148,7 @@ class ParagonWebpackPlugin { // create Paragon script to inject into the HTML document const paragonScript = ` `; @@ -148,32 +175,51 @@ class ParagonWebpackPlugin { return; } const { - coreCssAsset, - themeVariantCssAssets, + coreCssAsset: paragonCoreCssAsset, + themeVariantCssAssets: paragonThemeVariantCssAssets, } = this.getParagonCssAssetsFromCompilation(compilation); + const { + coreCssAsset: brandCoreCssAsset, + themeVariantCssAssets: brandThemeVariantCssAssets, + } = this.getParagonCssAssetsFromCompilation(compilation, { isBrandOverride: true }); + + let scriptContents; + const createEmptyScriptContentsIfUndefined = () => { + if (!scriptContents) { + scriptContents = {}; + } + }; const originalSource = file.source.source(); - let newSource; - if (!coreCssAsset || !Object.keys(themeVariantCssAssets).length === 0) { - newSource = this.insertParagonScriptIntoDocument({ - originalSource, - scriptContents: undefined, - }); - } else { - const scriptContents = { - version: this.version, + + if (paragonCoreCssAsset && Object.keys(paragonThemeVariantCssAssets).length > 0) { + createEmptyScriptContentsIfUndefined(); + scriptContents.paragon = { + version: this.paragon.version, themeUrls: { - core: coreCssAsset, - variants: themeVariantCssAssets, + core: paragonCoreCssAsset, + variants: paragonThemeVariantCssAssets, }, }; - newSource = this.insertParagonScriptIntoDocument({ - originalSource, - coreCssAsset, - themeVariantCssAssets, - scriptContents, - }); } + + if (brandCoreCssAsset && Object.keys(brandThemeVariantCssAssets).length > 0) { + createEmptyScriptContentsIfUndefined(); + scriptContents.brand = { + version: this.brand.version, + themeUrls: { + core: brandCoreCssAsset, + variants: brandThemeVariantCssAssets, + }, + }; + } + + const newSource = this.insertParagonScriptIntoDocument({ + originalSource, + coreCssAsset: paragonCoreCssAsset, + themeVariantCssAssets: paragonThemeVariantCssAssets, + scriptContents, + }); compilation.updateAsset('index.html', new sources.RawSource(newSource.source())); }, ); From 4d946534f289c794ec952b66525fc572a9101715 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Mon, 5 Jun 2023 01:39:11 -0400 Subject: [PATCH 15/23] chore: update snapshot --- config/jest/setupTest.js | 37 +++++++++---- example/src/__snapshots__/App.test.jsx.snap | 59 ++++++++++++++++----- 2 files changed, 74 insertions(+), 22 deletions(-) diff --git a/config/jest/setupTest.js b/config/jest/setupTest.js index 693949937..c2a381a6d 100644 --- a/config/jest/setupTest.js +++ b/config/jest/setupTest.js @@ -9,17 +9,34 @@ if (fs.existsSync(testEnvFile)) { dotenv.config({ path: testEnvFile }); } -global.PARAGON = { - version: '1.0.0', - themeUrls: { - core: { - fileName: 'core.min.css', +global.PARAGON_THEME = { + paragon: { + version: '1.0.0', + themeUrls: { + core: { + fileName: 'core.min.css', + }, + variants: { + light: { + fileName: 'light.min.css', + default: true, + dark: false, + }, + }, }, - variants: { - light: { - fileName: 'light.min.css', - default: true, - dark: false, + }, + brand: { + version: '1.0.0', + themeUrls: { + core: { + fileName: 'core.min.css', + }, + variants: { + light: { + fileName: 'light.min.css', + default: true, + dark: false, + }, }, }, }, diff --git a/example/src/__snapshots__/App.test.jsx.snap b/example/src/__snapshots__/App.test.jsx.snap index a125e1d86..d33b5dad3 100644 --- a/example/src/__snapshots__/App.test.jsx.snap +++ b/example/src/__snapshots__/App.test.jsx.snap @@ -108,7 +108,7 @@ exports[`Basic test should render 1`] = ` Paragon

    - Exposed Theme CSS + Exposed theme CSS files

    Contents of - PARAGON + PARAGON_THEME global variable

         {
    -  "version": "1.0.0",
    -  "themeUrls": {
    -    "core": {
    -      "fileName": "core.min.css"
    -    },
    -    "variants": {
    -      "light": {
    -        "fileName": "light.min.css",
    -        "default": true,
    -        "dark": false
    +  "paragon": {
    +    "version": "1.0.0",
    +    "themeUrls": {
    +      "core": {
    +        "fileName": "core.min.css"
    +      },
    +      "variants": {
    +        "light": {
    +          "fileName": "light.min.css",
    +          "default": true,
    +          "dark": false
    +        }
    +      }
    +    }
    +  },
    +  "brand": {
    +    "version": "1.0.0",
    +    "themeUrls": {
    +      "core": {
    +        "fileName": "core.min.css"
    +      },
    +      "variants": {
    +        "light": {
    +          "fileName": "light.min.css",
    +          "default": true,
    +          "dark": false
    +        }
           }
         }
       }
    
    From f9b47e7f8dd641975c1c77a9313226721a214896 Mon Sep 17 00:00:00 2001
    From: Adam Stankiewicz 
    Date: Sun, 23 Jul 2023 12:21:38 -0400
    Subject: [PATCH 16/23] fix: PR feedback
    
    ---
     config/data/paragonUtils.js                   |   28 +-
     config/jest/setupTest.js                      |   10 +-
     example/package-lock.json                     | 1029 ++++++++++++++++-
     example/package.json                          |    4 +-
     .../ParagonWebpackPlugin.js                   |  138 +--
     5 files changed, 1044 insertions(+), 165 deletions(-)
    
    diff --git a/config/data/paragonUtils.js b/config/data/paragonUtils.js
    index 653f6227e..8cc32825c 100644
    --- a/config/data/paragonUtils.js
    +++ b/config/data/paragonUtils.js
    @@ -29,8 +29,6 @@ function getParagonVersion(dir, { isBrandOverride = false } = {}) {
      * @property {string} filePath
      * @property {string} entryName
      * @property {string} outputChunkName
    - * @property {boolean} default
    - * @property {boolean} dark
      */
     
     /**
    @@ -55,6 +53,7 @@ function getParagonThemeCss(dir, { isBrandOverride = false } = {}) {
       const {
         core: themeCore,
         variants: themeVariants,
    +    defaults,
       } = paragonConfig?.themeUrls || {};
     
       const pathToCoreCss = path.resolve(dir, 'node_modules', npmPackageName, 'dist', themeCore.paths.minified);
    @@ -80,27 +79,17 @@ function getParagonThemeCss(dir, { isBrandOverride = false } = {}) {
         themeVariantResults[themeVariant] = {
           filePath: path.resolve(dir, 'node_modules', npmPackageName, 'dist', value.paths.minified),
           entryName: isBrandOverride ? `brand.theme.variants.${themeVariant}` : `paragon.theme.variants.${themeVariant}`,
    -      outputChunkName: isBrandOverride ? `brand-theme-variant-${themeVariant}` : `paragon-theme-variant-${themeVariant}`,
    -      default: value.default,
    -      dark: value.dark,
    +      outputChunkName: isBrandOverride ? `brand-theme-variants-${themeVariant}` : `paragon-theme-variants-${themeVariant}`,
         };
       });
     
       return {
         core: fs.existsSync(pathToCoreCss) ? coreResult : undefined,
         variants: themeVariantResults,
    +    defaults,
       };
     }
     
    -/**
    - * Replaces all periods in a string with hyphens.
    - * @param {string} str A string containing periods to replace with hyphens.
    - * @returns The input string with periods replaced with hyphens.
    - */
    -function replacePeriodsWithHyphens(str) {
    -  return str.replaceAll('.', '-');
    -}
    -
     /**
      * @typedef CacheGroup
      * @property {string} type The type of cache group.
    @@ -118,16 +107,16 @@ function getParagonCacheGroups(paragonThemeCss) {
       if (!paragonThemeCss) {
         return cacheGroups;
       }
    -  cacheGroups[paragonThemeCss.core.entryName] = {
    +  cacheGroups[paragonThemeCss.core.outputChunkName] = {
         type: 'css/mini-extract',
    -    name: replacePeriodsWithHyphens(paragonThemeCss.core.entryName),
    +    name: paragonThemeCss.core.outputChunkName,
         chunks: chunk => chunk.name === paragonThemeCss.core.entryName,
         enforce: true,
       };
    -  Object.values(paragonThemeCss.variants).forEach(({ entryName }) => {
    -    cacheGroups[entryName] = {
    +  Object.values(paragonThemeCss.variants).forEach(({ entryName, outputChunkName }) => {
    +    cacheGroups[outputChunkName] = {
           type: 'css/mini-extract',
    -      name: replacePeriodsWithHyphens(entryName),
    +      name: outputChunkName,
           chunks: chunk => chunk.name === entryName,
           enforce: true,
         };
    @@ -161,5 +150,4 @@ module.exports = {
       getParagonThemeCss,
       getParagonCacheGroups,
       getParagonEntryPoints,
    -  replacePeriodsWithHyphens,
     };
    diff --git a/config/jest/setupTest.js b/config/jest/setupTest.js
    index c2a381a6d..2a844d24c 100644
    --- a/config/jest/setupTest.js
    +++ b/config/jest/setupTest.js
    @@ -16,11 +16,12 @@ global.PARAGON_THEME = {
           core: {
             fileName: 'core.min.css',
           },
    +      defaults: {
    +        light: 'light',
    +      },
           variants: {
             light: {
               fileName: 'light.min.css',
    -          default: true,
    -          dark: false,
             },
           },
         },
    @@ -31,11 +32,12 @@ global.PARAGON_THEME = {
           core: {
             fileName: 'core.min.css',
           },
    +      defaults: {
    +        light: 'light',
    +      },
           variants: {
             light: {
               fileName: 'light.min.css',
    -          default: true,
    -          dark: false,
             },
           },
         },
    diff --git a/example/package-lock.json b/example/package-lock.json
    index 2ed1d1753..df18d1f99 100644
    --- a/example/package-lock.json
    +++ b/example/package-lock.json
    @@ -9,8 +9,8 @@
           "version": "1.0.0",
           "license": "ISC",
           "dependencies": {
    -        "@edx/brand": "npm:@edx/brand-openedx@1.2.0",
    -        "@edx/paragon": "20.43.0",
    +        "@edx/brand": "npm:@edx/brand-edx.org@2.2.0-alpha.13",
    +        "@edx/paragon": "21.0.0-alpha.40",
             "react": "16.14.0",
             "react-dom": "16.14.0"
           },
    @@ -30,11 +30,88 @@
             "node": ">=6.9.0"
           }
         },
    +    "node_modules/@csstools/cascade-layer-name-parser": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.3.tgz",
    +      "integrity": "sha512-ks9ysPP8012j90EQCCFtDsQIXOTCOpTQFIyyoRku06y8CXtUQ+8bXI8KVm9Q9ovwDUVthWuWKZWJD3u1rwnEfw==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/csstools"
    +        },
    +        {
    +          "type": "opencollective",
    +          "url": "https://opencollective.com/csstools"
    +        }
    +      ],
    +      "engines": {
    +        "node": "^14 || ^16 || >=18"
    +      },
    +      "peerDependencies": {
    +        "@csstools/css-parser-algorithms": "^2.3.0",
    +        "@csstools/css-tokenizer": "^2.1.1"
    +      }
    +    },
    +    "node_modules/@csstools/css-parser-algorithms": {
    +      "version": "2.3.0",
    +      "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.0.tgz",
    +      "integrity": "sha512-dTKSIHHWc0zPvcS5cqGP+/TPFUJB0ekJ9dGKvMAFoNuBFhDPBt9OMGNZiIA5vTiNdGHHBeScYPXIGBMnVOahsA==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/csstools"
    +        },
    +        {
    +          "type": "opencollective",
    +          "url": "https://opencollective.com/csstools"
    +        }
    +      ],
    +      "engines": {
    +        "node": "^14 || ^16 || >=18"
    +      },
    +      "peerDependencies": {
    +        "@csstools/css-tokenizer": "^2.1.1"
    +      }
    +    },
    +    "node_modules/@csstools/css-tokenizer": {
    +      "version": "2.1.1",
    +      "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz",
    +      "integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==",
    +      "engines": {
    +        "node": "^14 || ^16 || >=18"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/csstools"
    +      }
    +    },
    +    "node_modules/@csstools/media-query-list-parser": {
    +      "version": "2.1.2",
    +      "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.2.tgz",
    +      "integrity": "sha512-M8cFGGwl866o6++vIY7j1AKuq9v57cf+dGepScwCcbut9ypJNr4Cj+LLTWligYUZ0uyhEoJDKt5lvyBfh2L3ZQ==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/csstools"
    +        },
    +        {
    +          "type": "opencollective",
    +          "url": "https://opencollective.com/csstools"
    +        }
    +      ],
    +      "engines": {
    +        "node": "^14 || ^16 || >=18"
    +      },
    +      "peerDependencies": {
    +        "@csstools/css-parser-algorithms": "^2.3.0",
    +        "@csstools/css-tokenizer": "^2.1.1"
    +      }
    +    },
         "node_modules/@edx/brand": {
    -      "name": "@edx/brand-openedx",
    -      "version": "1.2.0",
    -      "resolved": "https://registry.npmjs.org/@edx/brand-openedx/-/brand-openedx-1.2.0.tgz",
    -      "integrity": "sha512-r4PDN3rCgDsLovW44ayxoNNHgG5I4Rvss6MG5CrQEX4oW8YhQVEod+jJtwR5vi0mFLN2GIaMlDpd7iIy03VqXg=="
    +      "name": "@edx/brand-edx.org",
    +      "version": "2.2.0-alpha.13",
    +      "resolved": "https://registry.npmjs.org/@edx/brand-edx.org/-/brand-edx.org-2.2.0-alpha.13.tgz",
    +      "integrity": "sha512-ujgd5nz+/cMbg5H/8exed7Y0v62ihOAbrWLpKj24EjcXWcHdcRypF/vkYJymTq0ZvrGrx9S8LBaCCNiIo/rDMQ=="
         },
         "node_modules/@edx/browserslist-config": {
           "version": "1.2.0",
    @@ -43,21 +120,27 @@
           "dev": true
         },
         "node_modules/@edx/paragon": {
    -      "version": "20.43.0",
    -      "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.43.0.tgz",
    -      "integrity": "sha512-ErgTL2k8DrV0Xp+2c81YBn1ekdHa6VAtSLMpOw/BI6RN6hQ/AaCSSLxVyvq9sVpmNSvKmOd/tPAY0aBwA5hSUA==",
    +      "version": "21.0.0-alpha.40",
    +      "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-21.0.0-alpha.40.tgz",
    +      "integrity": "sha512-Dy5KEhiuCoCR27JinAJW6hhAeYAdLVzt+jszUglO1ZKWQAMBMcJZQcugicuQkGhrVoei8zoFzwjXft3WhKe5Ew==",
           "dependencies": {
    -        "@fortawesome/fontawesome-svg-core": "^6.1.1",
    -        "@fortawesome/react-fontawesome": "^0.1.18",
             "@popperjs/core": "^2.11.4",
             "bootstrap": "^4.6.2",
    +        "chalk": "^4.1.2",
    +        "chroma-js": "^2.4.2",
             "classnames": "^2.3.1",
    +        "commander": "^9.4.1",
             "email-prop-type": "^3.0.0",
             "file-selector": "^0.6.0",
    -        "font-awesome": "^4.7.0",
             "glob": "^8.0.3",
             "lodash.uniqby": "^4.7.0",
             "mailto-link": "^2.0.0",
    +        "postcss": "^8.4.21",
    +        "postcss-combine-duplicated-selectors": "^10.0.3",
    +        "postcss-custom-media": "^9.1.2",
    +        "postcss-import": "^15.1.0",
    +        "postcss-map": "^0.11.0",
    +        "postcss-minify": "^1.1.0",
             "prop-types": "^15.8.1",
             "react-bootstrap": "^1.6.5",
             "react-colorful": "^5.6.1",
    @@ -69,10 +152,17 @@
             "react-responsive": "^8.2.0",
             "react-table": "^7.7.0",
             "react-transition-group": "^4.4.2",
    +        "sass": "^1.58.3",
    +        "style-dictionary": "^3.7.1",
             "tabbable": "^5.3.3",
             "uncontrollable": "^7.2.1",
             "uuid": "^9.0.0"
           },
    +      "bin": {
    +        "build-design-tokens": "tokens/build-tokens.js",
    +        "build-scss": "build-scss.js",
    +        "replace-scss-with-css": "tokens/replace-variables.js"
    +      },
           "peerDependencies": {
             "react": "^16.8.6 || ^17.0.0",
             "react-dom": "^16.8.6 || ^17.0.0",
    @@ -173,39 +263,6 @@
             "tslib": "^2.1.0"
           }
         },
    -    "node_modules/@fortawesome/fontawesome-common-types": {
    -      "version": "6.4.0",
    -      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz",
    -      "integrity": "sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==",
    -      "hasInstallScript": true,
    -      "engines": {
    -        "node": ">=6"
    -      }
    -    },
    -    "node_modules/@fortawesome/fontawesome-svg-core": {
    -      "version": "6.4.0",
    -      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz",
    -      "integrity": "sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==",
    -      "hasInstallScript": true,
    -      "dependencies": {
    -        "@fortawesome/fontawesome-common-types": "6.4.0"
    -      },
    -      "engines": {
    -        "node": ">=6"
    -      }
    -    },
    -    "node_modules/@fortawesome/react-fontawesome": {
    -      "version": "0.1.19",
    -      "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.19.tgz",
    -      "integrity": "sha512-Hyb+lB8T18cvLNX0S3llz7PcSOAJMLwiVKBuuzwM/nI5uoBw+gQjnf9il0fR1C3DKOI5Kc79pkJ4/xB0Uw9aFQ==",
    -      "dependencies": {
    -        "prop-types": "^15.8.1"
    -      },
    -      "peerDependencies": {
    -        "@fortawesome/fontawesome-svg-core": "~1 || ~6",
    -        "react": ">=16.x"
    -      }
    -    },
         "node_modules/@popperjs/core": {
           "version": "2.11.8",
           "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
    @@ -282,6 +339,40 @@
           "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
           "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA=="
         },
    +    "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==",
    +      "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==",
    +      "dependencies": {
    +        "normalize-path": "^3.0.0",
    +        "picomatch": "^2.0.4"
    +      },
    +      "engines": {
    +        "node": ">= 8"
    +      }
    +    },
    +    "node_modules/argparse": {
    +      "version": "1.0.10",
    +      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
    +      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
    +      "dependencies": {
    +        "sprintf-js": "~1.0.2"
    +      }
    +    },
         "node_modules/aria-hidden": {
           "version": "1.2.3",
           "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz",
    @@ -311,6 +402,14 @@
           "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
           "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
         },
    +    "node_modules/binary-extensions": {
    +      "version": "2.2.0",
    +      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
    +      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
         "node_modules/bootstrap": {
           "version": "4.6.2",
           "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz",
    @@ -338,6 +437,36 @@
             "balanced-match": "^1.0.0"
           }
         },
    +    "node_modules/braces": {
    +      "version": "3.0.2",
    +      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
    +      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
    +      "dependencies": {
    +        "fill-range": "^7.0.1"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/camel-case": {
    +      "version": "4.1.2",
    +      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
    +      "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
    +      "dependencies": {
    +        "pascal-case": "^3.1.2",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/capital-case": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz",
    +      "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==",
    +      "dependencies": {
    +        "no-case": "^3.0.4",
    +        "tslib": "^2.0.3",
    +        "upper-case-first": "^2.0.2"
    +      }
    +    },
         "node_modules/cast-array": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/cast-array/-/cast-array-1.0.1.tgz",
    @@ -346,16 +475,131 @@
             "isarray": "0.0.1"
           }
         },
    +    "node_modules/chalk": {
    +      "version": "4.1.2",
    +      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
    +      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
    +      "dependencies": {
    +        "ansi-styles": "^4.1.0",
    +        "supports-color": "^7.1.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/chalk/chalk?sponsor=1"
    +      }
    +    },
    +    "node_modules/change-case": {
    +      "version": "4.1.2",
    +      "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz",
    +      "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==",
    +      "dependencies": {
    +        "camel-case": "^4.1.2",
    +        "capital-case": "^1.0.4",
    +        "constant-case": "^3.0.4",
    +        "dot-case": "^3.0.4",
    +        "header-case": "^2.0.4",
    +        "no-case": "^3.0.4",
    +        "param-case": "^3.0.4",
    +        "pascal-case": "^3.1.2",
    +        "path-case": "^3.0.4",
    +        "sentence-case": "^3.0.4",
    +        "snake-case": "^3.0.4",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/chokidar": {
    +      "version": "3.5.3",
    +      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
    +      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
    +      "funding": [
    +        {
    +          "type": "individual",
    +          "url": "https://paulmillr.com/funding/"
    +        }
    +      ],
    +      "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"
    +      },
    +      "optionalDependencies": {
    +        "fsevents": "~2.3.2"
    +      }
    +    },
    +    "node_modules/chroma-js": {
    +      "version": "2.4.2",
    +      "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
    +      "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
    +    },
         "node_modules/classnames": {
           "version": "2.3.2",
           "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
           "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
         },
    +    "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==",
    +      "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=="
    +    },
    +    "node_modules/commander": {
    +      "version": "9.5.0",
    +      "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
    +      "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
    +      "engines": {
    +        "node": "^12.20.0 || >=14"
    +      }
    +    },
    +    "node_modules/concat-map": {
    +      "version": "0.0.1",
    +      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
    +      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
    +    },
    +    "node_modules/constant-case": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz",
    +      "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
    +      "dependencies": {
    +        "no-case": "^3.0.4",
    +        "tslib": "^2.0.3",
    +        "upper-case": "^2.0.2"
    +      }
    +    },
         "node_modules/css-mediaquery": {
           "version": "0.1.2",
           "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz",
           "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q=="
         },
    +    "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==",
    +      "bin": {
    +        "cssesc": "bin/cssesc"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
         "node_modules/csstype": {
           "version": "3.1.2",
           "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
    @@ -391,6 +635,15 @@
             "csstype": "^3.0.2"
           }
         },
    +    "node_modules/dot-case": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
    +      "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
    +      "dependencies": {
    +        "no-case": "^3.0.4",
    +        "tslib": "^2.0.3"
    +      }
    +    },
         "node_modules/email-prop-type": {
           "version": "3.0.1",
           "resolved": "https://registry.npmjs.org/email-prop-type/-/email-prop-type-3.0.1.tgz",
    @@ -407,6 +660,18 @@
             "node": ">4.0"
           }
         },
    +    "node_modules/esprima": {
    +      "version": "4.0.1",
    +      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
    +      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
    +      "bin": {
    +        "esparse": "bin/esparse.js",
    +        "esvalidate": "bin/esvalidate.js"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
         "node_modules/file-selector": {
           "version": "0.6.0",
           "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz",
    @@ -418,6 +683,17 @@
             "node": ">= 12"
           }
         },
    +    "node_modules/fill-range": {
    +      "version": "7.0.1",
    +      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
    +      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
    +      "dependencies": {
    +        "to-regex-range": "^5.0.1"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
         "node_modules/filter-obj": {
           "version": "1.1.0",
           "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
    @@ -437,12 +713,17 @@
             "node": ">=10"
           }
         },
    -    "node_modules/font-awesome": {
    -      "version": "4.7.0",
    -      "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
    -      "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==",
    +    "node_modules/fs-extra": {
    +      "version": "10.1.0",
    +      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
    +      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
    +      "dependencies": {
    +        "graceful-fs": "^4.2.0",
    +        "jsonfile": "^6.0.1",
    +        "universalify": "^2.0.0"
    +      },
           "engines": {
    -        "node": ">=0.10.3"
    +        "node": ">=12"
           }
         },
         "node_modules/fs.realpath": {
    @@ -450,6 +731,24 @@
           "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
           "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
         },
    +    "node_modules/fsevents": {
    +      "version": "2.3.2",
    +      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
    +      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
    +      "hasInstallScript": true,
    +      "optional": true,
    +      "os": [
    +        "darwin"
    +      ],
    +      "engines": {
    +        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
    +      }
    +    },
    +    "node_modules/function-bind": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
    +      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
    +    },
         "node_modules/get-nonce": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
    @@ -476,6 +775,50 @@
             "url": "https://github.com/sponsors/isaacs"
           }
         },
    +    "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==",
    +      "dependencies": {
    +        "is-glob": "^4.0.1"
    +      },
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "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=="
    +    },
    +    "node_modules/has": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
    +      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
    +      "dependencies": {
    +        "function-bind": "^1.1.1"
    +      },
    +      "engines": {
    +        "node": ">= 0.4.0"
    +      }
    +    },
    +    "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==",
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/header-case": {
    +      "version": "2.0.4",
    +      "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz",
    +      "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==",
    +      "dependencies": {
    +        "capital-case": "^1.0.4",
    +        "tslib": "^2.0.3"
    +      }
    +    },
         "node_modules/hoist-non-react-statics": {
           "version": "3.3.2",
           "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
    @@ -490,6 +833,11 @@
           "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
           "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ=="
         },
    +    "node_modules/immutable": {
    +      "version": "4.3.1",
    +      "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz",
    +      "integrity": "sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A=="
    +    },
         "node_modules/inflight": {
           "version": "1.0.6",
           "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
    @@ -524,6 +872,55 @@
             "loose-envify": "^1.0.0"
           }
         },
    +    "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==",
    +      "dependencies": {
    +        "binary-extensions": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/is-core-module": {
    +      "version": "2.12.1",
    +      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
    +      "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
    +      "dependencies": {
    +        "has": "^1.0.3"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-extglob": {
    +      "version": "2.1.1",
    +      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
    +      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "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==",
    +      "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==",
    +      "engines": {
    +        "node": ">=0.12.0"
    +      }
    +    },
         "node_modules/isarray": {
           "version": "0.0.1",
           "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
    @@ -540,6 +937,50 @@
           "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
           "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
         },
    +    "node_modules/js-yaml": {
    +      "version": "3.14.1",
    +      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
    +      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
    +      "dependencies": {
    +        "argparse": "^1.0.7",
    +        "esprima": "^4.0.0"
    +      },
    +      "bin": {
    +        "js-yaml": "bin/js-yaml.js"
    +      }
    +    },
    +    "node_modules/json5": {
    +      "version": "2.2.3",
    +      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
    +      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
    +      "bin": {
    +        "json5": "lib/cli.js"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/jsonc-parser": {
    +      "version": "3.2.0",
    +      "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
    +      "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
    +    },
    +    "node_modules/jsonfile": {
    +      "version": "6.1.0",
    +      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
    +      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
    +      "dependencies": {
    +        "universalify": "^2.0.0"
    +      },
    +      "optionalDependencies": {
    +        "graceful-fs": "^4.1.6"
    +      }
    +    },
    +    "node_modules/lodash": {
    +      "version": "4.17.21",
    +      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
    +      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
    +    },
         "node_modules/lodash.uniqby": {
           "version": "4.7.0",
           "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
    @@ -556,6 +997,14 @@
             "loose-envify": "cli.js"
           }
         },
    +    "node_modules/lower-case": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
    +      "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
    +      "dependencies": {
    +        "tslib": "^2.0.3"
    +      }
    +    },
         "node_modules/mailto-link": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/mailto-link/-/mailto-link-2.0.0.tgz",
    @@ -589,6 +1038,40 @@
             "node": ">=10"
           }
         },
    +    "node_modules/nanoid": {
    +      "version": "3.3.6",
    +      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
    +      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/ai"
    +        }
    +      ],
    +      "bin": {
    +        "nanoid": "bin/nanoid.cjs"
    +      },
    +      "engines": {
    +        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
    +      }
    +    },
    +    "node_modules/no-case": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
    +      "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
    +      "dependencies": {
    +        "lower-case": "^2.0.2",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "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==",
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
         "node_modules/object-assign": {
           "version": "4.1.1",
           "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
    @@ -610,6 +1093,70 @@
             "wrappy": "1"
           }
         },
    +    "node_modules/param-case": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
    +      "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
    +      "dependencies": {
    +        "dot-case": "^3.0.4",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/pascal-case": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
    +      "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
    +      "dependencies": {
    +        "no-case": "^3.0.4",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/path-case": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz",
    +      "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==",
    +      "dependencies": {
    +        "dot-case": "^3.0.4",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/path-is-absolute": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
    +      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/path-parse": {
    +      "version": "1.0.7",
    +      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
    +      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
    +    },
    +    "node_modules/picocolors": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
    +      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
    +    },
    +    "node_modules/picomatch": {
    +      "version": "2.3.1",
    +      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
    +      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
    +      "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==",
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
         "node_modules/popper.js": {
           "version": "1.16.1",
           "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
    @@ -621,6 +1168,153 @@
             "url": "https://opencollective.com/popperjs"
           }
         },
    +    "node_modules/postcss": {
    +      "version": "8.4.27",
    +      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz",
    +      "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==",
    +      "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"
    +        }
    +      ],
    +      "dependencies": {
    +        "nanoid": "^3.3.6",
    +        "picocolors": "^1.0.0",
    +        "source-map-js": "^1.0.2"
    +      },
    +      "engines": {
    +        "node": "^10 || ^12 || >=14"
    +      }
    +    },
    +    "node_modules/postcss-combine-duplicated-selectors": {
    +      "version": "10.0.3",
    +      "resolved": "https://registry.npmjs.org/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-10.0.3.tgz",
    +      "integrity": "sha512-IP0BmwFloCskv7DV7xqvzDXqMHpwdczJa6ZvIW8abgHdcIHs9mCJX2ltFhu3EwA51ozp13DByng30+Ke+eIExA==",
    +      "dependencies": {
    +        "postcss-selector-parser": "^6.0.4"
    +      },
    +      "engines": {
    +        "node": "^10.0.0 || ^12.0.0 || >=14.0.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.1.0"
    +      }
    +    },
    +    "node_modules/postcss-custom-media": {
    +      "version": "9.1.5",
    +      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-9.1.5.tgz",
    +      "integrity": "sha512-GStyWMz7Qbo/Gtw1xVspzVSX8eipgNg4lpsO3CAeY4/A1mzok+RV6MCv3fg62trWijh/lYEj6vps4o8JcBBpDA==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/csstools"
    +        },
    +        {
    +          "type": "opencollective",
    +          "url": "https://opencollective.com/csstools"
    +        }
    +      ],
    +      "dependencies": {
    +        "@csstools/cascade-layer-name-parser": "^1.0.2",
    +        "@csstools/css-parser-algorithms": "^2.2.0",
    +        "@csstools/css-tokenizer": "^2.1.1",
    +        "@csstools/media-query-list-parser": "^2.1.1"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.4"
    +      }
    +    },
    +    "node_modules/postcss-import": {
    +      "version": "15.1.0",
    +      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
    +      "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
    +      "dependencies": {
    +        "postcss-value-parser": "^4.0.0",
    +        "read-cache": "^1.0.0",
    +        "resolve": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": ">=14.0.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.0.0"
    +      }
    +    },
    +    "node_modules/postcss-map": {
    +      "version": "0.11.0",
    +      "resolved": "https://registry.npmjs.org/postcss-map/-/postcss-map-0.11.0.tgz",
    +      "integrity": "sha512-cgHYZrH9aAMds90upYUPhYz8xnAcRD45SwuNns/nQHONIrPQDhpwk3JLsAQGOndQxnRVXfB6nB+3WqSMy8fqlA==",
    +      "dependencies": {
    +        "js-yaml": "^3.12.0",
    +        "postcss": "^7.0.2",
    +        "reduce-function-call": "^1.0.1"
    +      },
    +      "engines": {
    +        "node": ">=6.0.0"
    +      }
    +    },
    +    "node_modules/postcss-map/node_modules/picocolors": {
    +      "version": "0.2.1",
    +      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
    +      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA=="
    +    },
    +    "node_modules/postcss-map/node_modules/postcss": {
    +      "version": "7.0.39",
    +      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
    +      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
    +      "dependencies": {
    +        "picocolors": "^0.2.1",
    +        "source-map": "^0.6.1"
    +      },
    +      "engines": {
    +        "node": ">=6.0.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/postcss/"
    +      }
    +    },
    +    "node_modules/postcss-minify": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/postcss-minify/-/postcss-minify-1.1.0.tgz",
    +      "integrity": "sha512-9D64ueIW0DL2FdLajQTlXrnTN8Ox9NjuXqigKMmB819RhdClNPYx5Zp3i5x0ghjjy3vGrLBBYEYvJjY/1eMNbw==",
    +      "dependencies": {
    +        "postcss-selector-parser": "^6.0",
    +        "postcss-value-parser": "^4.1"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.0"
    +      }
    +    },
    +    "node_modules/postcss-selector-parser": {
    +      "version": "6.0.13",
    +      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
    +      "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
    +      "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=="
    +    },
         "node_modules/prop-types": {
           "version": "15.8.1",
           "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
    @@ -1013,11 +1707,70 @@
             "react-dom": ">=16.6.0"
           }
         },
    +    "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==",
    +      "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==",
    +      "dependencies": {
    +        "picomatch": "^2.2.1"
    +      },
    +      "engines": {
    +        "node": ">=8.10.0"
    +      }
    +    },
    +    "node_modules/reduce-function-call": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz",
    +      "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==",
    +      "dependencies": {
    +        "balanced-match": "^1.0.0"
    +      }
    +    },
         "node_modules/regenerator-runtime": {
           "version": "0.13.11",
           "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
           "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
         },
    +    "node_modules/resolve": {
    +      "version": "1.22.2",
    +      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
    +      "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
    +      "dependencies": {
    +        "is-core-module": "^2.11.0",
    +        "path-parse": "^1.0.7",
    +        "supports-preserve-symlinks-flag": "^1.0.0"
    +      },
    +      "bin": {
    +        "resolve": "bin/resolve"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/sass": {
    +      "version": "1.64.1",
    +      "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz",
    +      "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==",
    +      "dependencies": {
    +        "chokidar": ">=3.0.0 <4.0.0",
    +        "immutable": "^4.0.0",
    +        "source-map-js": ">=0.6.2 <2.0.0"
    +      },
    +      "bin": {
    +        "sass": "sass.js"
    +      },
    +      "engines": {
    +        "node": ">=14.0.0"
    +      }
    +    },
         "node_modules/scheduler": {
           "version": "0.19.1",
           "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
    @@ -1027,11 +1780,46 @@
             "object-assign": "^4.1.1"
           }
         },
    +    "node_modules/sentence-case": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz",
    +      "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==",
    +      "dependencies": {
    +        "no-case": "^3.0.4",
    +        "tslib": "^2.0.3",
    +        "upper-case-first": "^2.0.2"
    +      }
    +    },
         "node_modules/shallow-equal": {
           "version": "1.2.1",
           "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
           "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
         },
    +    "node_modules/snake-case": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
    +      "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
    +      "dependencies": {
    +        "dot-case": "^3.0.4",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/source-map": {
    +      "version": "0.6.1",
    +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    +      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/source-map-js": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
    +      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
         "node_modules/split-on-first": {
           "version": "1.1.0",
           "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
    @@ -1040,6 +1828,11 @@
             "node": ">=6"
           }
         },
    +    "node_modules/sprintf-js": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
    +      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
    +    },
         "node_modules/strict-uri-encode": {
           "version": "2.0.0",
           "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
    @@ -1048,11 +1841,118 @@
             "node": ">=4"
           }
         },
    +    "node_modules/style-dictionary": {
    +      "version": "3.8.0",
    +      "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-3.8.0.tgz",
    +      "integrity": "sha512-wHlB/f5eO3mDcYv6WtOz6gvQC477jBKrwuIXe+PtHskTCBsJdAOvL8hCquczJxDui2TnwpeNE+2msK91JJomZg==",
    +      "dependencies": {
    +        "chalk": "^4.0.0",
    +        "change-case": "^4.1.2",
    +        "commander": "^8.3.0",
    +        "fs-extra": "^10.0.0",
    +        "glob": "^7.2.0",
    +        "json5": "^2.2.2",
    +        "jsonc-parser": "^3.0.0",
    +        "lodash": "^4.17.15",
    +        "tinycolor2": "^1.4.1"
    +      },
    +      "bin": {
    +        "style-dictionary": "bin/style-dictionary"
    +      },
    +      "engines": {
    +        "node": ">=12.0.0"
    +      }
    +    },
    +    "node_modules/style-dictionary/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/style-dictionary/node_modules/commander": {
    +      "version": "8.3.0",
    +      "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
    +      "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
    +      "engines": {
    +        "node": ">= 12"
    +      }
    +    },
    +    "node_modules/style-dictionary/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/style-dictionary/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "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==",
    +      "dependencies": {
    +        "has-flag": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/supports-preserve-symlinks-flag": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
    +      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
         "node_modules/tabbable": {
           "version": "5.3.3",
           "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz",
           "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA=="
         },
    +    "node_modules/tinycolor2": {
    +      "version": "1.6.0",
    +      "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
    +      "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
    +    },
    +    "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==",
    +      "dependencies": {
    +        "is-number": "^7.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8.0"
    +      }
    +    },
         "node_modules/tslib": {
           "version": "2.5.2",
           "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
    @@ -1072,6 +1972,30 @@
             "react": ">=15.0.0"
           }
         },
    +    "node_modules/universalify": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
    +      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
    +      "engines": {
    +        "node": ">= 10.0.0"
    +      }
    +    },
    +    "node_modules/upper-case": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz",
    +      "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==",
    +      "dependencies": {
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/upper-case-first": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz",
    +      "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==",
    +      "dependencies": {
    +        "tslib": "^2.0.3"
    +      }
    +    },
         "node_modules/use-callback-ref": {
           "version": "1.3.0",
           "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
    @@ -1113,6 +2037,11 @@
             }
           }
         },
    +    "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=="
    +    },
         "node_modules/uuid": {
           "version": "9.0.0",
           "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
    diff --git a/example/package.json b/example/package.json
    index 1e5758dae..65818913f 100644
    --- a/example/package.json
    +++ b/example/package.json
    @@ -15,8 +15,8 @@
       "author": "",
       "license": "ISC",
       "dependencies": {
    -    "@edx/brand": "npm:@edx/brand-openedx@1.2.0",
    -    "@edx/paragon": "20.43.0",
    +    "@edx/brand": "npm:@edx/brand-edx.org@2.2.0-alpha.13",
    +    "@edx/paragon": "21.0.0-alpha.40",
         "react": "16.14.0",
         "react-dom": "16.14.0"
       },
    diff --git a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js
    index 7f75fe457..0b05ec547 100644
    --- a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js
    +++ b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js
    @@ -3,7 +3,6 @@ const parse5 = require('parse5');
     const {
       getParagonVersion,
       getParagonThemeCss,
    -  replacePeriodsWithHyphens,
     } = require('../../../config/data/paragonUtils');
     
     const paragonVersion = getParagonVersion(process.cwd());
    @@ -16,47 +15,11 @@ class ParagonWebpackPlugin {
       constructor() {
         this.paragon = {
           version: paragonVersion,
    -      coreEntryName: undefined,
    -      themeVariantEntryNames: {},
         };
     
         this.brand = {
           version: brandVersion,
    -      coreEntryName: undefined,
    -      themeVariantEntryNames: {},
         };
    -
    -    if (!paragonThemeCss && !brandThemeCss) {
    -      return;
    -    }
    -
    -    if (paragonThemeCss) {
    -      // Core Paragon
    -      this.paragon.coreEntryName = replacePeriodsWithHyphens(paragonThemeCss.core.entryName);
    -      Object.entries(paragonThemeCss.variants).forEach(([key, value]) => {
    -        this.paragon.themeVariantEntryNames[key] = {
    -          entryName: replacePeriodsWithHyphens(value.entryName),
    -          default: value.default,
    -          dark: value.dark,
    -        };
    -      });
    -    }
    -
    -    if (brandThemeCss) {
    -      // `@edx/brand` overrides
    -      this.brand.coreEntryName = replacePeriodsWithHyphens(brandThemeCss.core.entryName);
    -      Object.entries(brandThemeCss.variants).forEach(([key, value]) => {
    -        this.brand.themeVariantEntryNames[key] = {
    -          entryName: replacePeriodsWithHyphens(value.entryName),
    -          default: value.default,
    -          dark: value.dark,
    -        };
    -      });
    -    }
    -  }
    -
    -  logger(message) {
    -    console.log('[ParagonWebpackPlugin]', message);
       }
     
       getDescendantByTag(node, tag) {
    @@ -72,31 +35,30 @@ class ParagonWebpackPlugin {
         return null;
       }
     
    -  getParagonCssAssetsFromCompilation(compilation, { isBrandOverride = false } = {}) {
    -    const assetSubstring = isBrandOverride ? 'brand' : 'paragon';
    -    const paragonAssets = compilation.getAssets().filter(asset => asset.name.includes(assetSubstring) && asset.name.endsWith('.css'));
    -    const coreCssAsset = paragonAssets.find((asset) => asset.name.includes(this[assetSubstring].coreEntryName));
    +  findCoreCssAsset(paragonAssets) {
    +    return paragonAssets?.find((asset) => asset.name.includes('core') && asset.name.endsWith('.css'));
    +  }
     
    +  findThemeVariantCssAssets(paragonAssets, { isBrandOverride = false }) {
    +    const themeVariantsSource = isBrandOverride ? brandThemeCss?.variants : paragonThemeCss?.variants;
         const themeVariantCssAssets = {};
    -    Object.entries(this[assetSubstring].themeVariantEntryNames).forEach(([themeVariant, value]) => {
    -      const foundThemeVariantAsset = paragonAssets.find((asset) => asset.name.includes(value.entryName));
    +    Object.entries(themeVariantsSource).forEach(([themeVariant, value]) => {
    +      const foundThemeVariantAsset = paragonAssets.find((asset) => asset.name.includes(value.outputChunkName));
           if (!foundThemeVariantAsset) {
             return;
           }
           themeVariantCssAssets[themeVariant] = {
             fileName: foundThemeVariantAsset.name,
    -        default: value.default,
    -        dark: value.dark,
           };
         });
    +    return themeVariantCssAssets;
    +  }
     
    -    if (!coreCssAsset || !Object.keys(themeVariantCssAssets).length === 0) {
    -      return {
    -        coreCssAsset: undefined,
    -        themeVariantCssAssets: {},
    -      };
    -    }
    -
    +  getParagonCssAssetsFromCompilation(compilation, { isBrandOverride = false } = {}) {
    +    const assetSubstring = isBrandOverride ? 'brand' : 'paragon';
    +    const paragonAssets = compilation.getAssets().filter(asset => asset.name.includes(assetSubstring) && asset.name.endsWith('.css'));
    +    const coreCssAsset = this.findCoreCssAsset(paragonAssets);
    +    const themeVariantCssAssets = this.findThemeVariantCssAssets(paragonAssets, { isBrandOverride });
         return {
           coreCssAsset: {
             fileName: coreCssAsset?.name,
    @@ -108,7 +70,7 @@ class ParagonWebpackPlugin {
       findScriptInsertionPoint({ document, originalSource }) {
         const bodyElement = this.getDescendantByTag(document, 'body');
         if (!bodyElement) {
    -      throw new Error('Missing body element in index.html');
    +      throw new Error('Missing body element in index.html.');
         }
     
         // determine script insertion point
    @@ -130,7 +92,7 @@ class ParagonWebpackPlugin {
           .trim();
       }
     
    -  insertParagonScriptIntoDocument({
    +  insertScriptContentsIntoDocument({
         originalSource,
         scriptContents,
       }) {
    @@ -146,11 +108,7 @@ class ParagonWebpackPlugin {
         });
     
         // create Paragon script to inject into the HTML document
    -    const paragonScript = `
    -      
    -    `;
    +    const paragonScript = ``;
     
         // insert the Paragon script into the HTML document
         const newSource = new sources.ReplaceSource(
    @@ -161,6 +119,22 @@ class ParagonWebpackPlugin {
         return newSource;
       }
     
    +  addToScriptContents({
    +    version,
    +    defaults,
    +    coreCssAsset,
    +    themeVariantCssAssets,
    +  }) {
    +    return {
    +      version,
    +      themeUrls: {
    +        core: coreCssAsset,
    +        variants: themeVariantCssAssets,
    +        defaults,
    +      },
    +    };
    +  }
    +
       apply(compiler) {
         compiler.hooks.thisCompilation.tap('ParagonWebpackPlugin', (compilation) => {
           compilation.hooks.processAssets.tap(
    @@ -184,37 +158,23 @@ class ParagonWebpackPlugin {
                 themeVariantCssAssets: brandThemeVariantCssAssets,
               } = this.getParagonCssAssetsFromCompilation(compilation, { isBrandOverride: true });
     
    -          let scriptContents;
    -          const createEmptyScriptContentsIfUndefined = () => {
    -            if (!scriptContents) {
    -              scriptContents = {};
    -            }
    -          };
    -          const originalSource = file.source.source();
    -
    -          if (paragonCoreCssAsset && Object.keys(paragonThemeVariantCssAssets).length > 0) {
    -            createEmptyScriptContentsIfUndefined();
    -            scriptContents.paragon = {
    -              version: this.paragon.version,
    -              themeUrls: {
    -                core: paragonCoreCssAsset,
    -                variants: paragonThemeVariantCssAssets,
    -              },
    -            };
    -          }
    -
    -          if (brandCoreCssAsset && Object.keys(brandThemeVariantCssAssets).length > 0) {
    -            createEmptyScriptContentsIfUndefined();
    -            scriptContents.brand = {
    -              version: this.brand.version,
    -              themeUrls: {
    -                core: brandCoreCssAsset,
    -                variants: brandThemeVariantCssAssets,
    -              },
    -            };
    -          }
    +          const scriptContents = {};
    +          scriptContents.paragon = this.addToScriptContents({
    +            version: this.paragon.version,
    +            coreCssAsset: paragonCoreCssAsset,
    +            themeVariantCssAssets: paragonThemeVariantCssAssets,
    +            defaults: paragonThemeCss.defaults,
    +          });
    +          scriptContents.brand = this.addToScriptContents({
    +            version: this.paragon.version,
    +            coreCssAsset: brandCoreCssAsset,
    +            themeVariantCssAssets: brandThemeVariantCssAssets,
    +            defaults: brandThemeCss.defaults,
    +          });
     
    -          const newSource = this.insertParagonScriptIntoDocument({
    +          const originalSource = file.source.source();
    +          console.log('scriptContents', JSON.stringify(scriptContents, null, 2));
    +          const newSource = this.insertScriptContentsIntoDocument({
                 originalSource,
                 coreCssAsset: paragonCoreCssAsset,
                 themeVariantCssAssets: paragonThemeVariantCssAssets,
    
    From bd710acd05f25e38b2963b2306a3df11e378326a Mon Sep 17 00:00:00 2001
    From: Adam Stankiewicz 
    Date: Sun, 23 Jul 2023 12:24:17 -0400
    Subject: [PATCH 17/23] fix: add comment to ParagonWebpackPlugin and update
     snapshots
    
    ---
     example/src/__snapshots__/App.test.jsx.snap        | 14 ++++++++------
     .../paragon-webpack-plugin/ParagonWebpackPlugin.js |  3 +++
     2 files changed, 11 insertions(+), 6 deletions(-)
    
    diff --git a/example/src/__snapshots__/App.test.jsx.snap b/example/src/__snapshots__/App.test.jsx.snap
    index d33b5dad3..607c03ee7 100644
    --- a/example/src/__snapshots__/App.test.jsx.snap
    +++ b/example/src/__snapshots__/App.test.jsx.snap
    @@ -163,11 +163,12 @@ exports[`Basic test should render 1`] = `
           "core": {
             "fileName": "core.min.css"
           },
    +      "defaults": {
    +        "light": "light"
    +      },
           "variants": {
             "light": {
    -          "fileName": "light.min.css",
    -          "default": true,
    -          "dark": false
    +          "fileName": "light.min.css"
             }
           }
         }
    @@ -178,11 +179,12 @@ exports[`Basic test should render 1`] = `
           "core": {
             "fileName": "core.min.css"
           },
    +      "defaults": {
    +        "light": "light"
    +      },
           "variants": {
             "light": {
    -          "fileName": "light.min.css",
    -          "default": true,
    -          "dark": false
    +          "fileName": "light.min.css"
             }
           }
         }
    diff --git a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js
    index 0b05ec547..3ac0c2cec 100644
    --- a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js
    +++ b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js
    @@ -11,6 +11,9 @@ const paragonThemeCss = getParagonThemeCss(process.cwd());
     const brandVersion = getParagonVersion(process.cwd(), { isBrandOverride: true });
     const brandThemeCss = getParagonThemeCss(process.cwd(), { isBrandOverride: true });
     
    +/**
    + * Injects `PARAGON_THEME` global variable into the HTML document during the Webpack compilation process.
    + */
     class ParagonWebpackPlugin {
       constructor() {
         this.paragon = {
    
    From 39cc967dd560b6ad2a1d8d47dd66a787769c1f92 Mon Sep 17 00:00:00 2001
    From: Adam Stankiewicz 
    Date: Mon, 24 Jul 2023 00:30:14 -0400
    Subject: [PATCH 18/23] feat: preload links from PARAGON_THEME_URLS config
    
    ---
     example/.env.development                      |    15 +-
     example/.gitignore                            |     1 +
     example/env.config.js                         |    25 +
     example/package-lock.json                     | 17476 ++++++++++++++--
     example/package.json                          |    13 +-
     example/src/ParagonPreview.jsx                |    56 +-
     example/src/index.jsx                         |    29 +-
     .../ParagonWebpackPlugin.js                   |   261 +-
     lib/plugins/paragon-webpack-plugin/utils.js   |   388 +
     package-lock.json                             |    29 +
     package.json                                  |     1 +
     11 files changed, 16720 insertions(+), 1574 deletions(-)
     create mode 100644 example/.gitignore
     create mode 100644 lib/plugins/paragon-webpack-plugin/utils.js
    
    diff --git a/example/.env.development b/example/.env.development
    index 4c9f3133e..725f7e694 100644
    --- a/example/.env.development
    +++ b/example/.env.development
    @@ -1,4 +1,17 @@
    -BASE_URL='http://localhost:8080'
    +APP_ID='example'
    +MFE_CONFIG_API_URL='http://localhost:18000/api/mfe_config/v1'
    +BASE_URL='http://localhost:3000'
     PORT=3000
     FAVICON_URL=https://edx-cdn.org/v3/default/favicon.ico
     TEST_VARIABLE='foo'
    +LMS_BASE_URL=http://localhost:18000
    +LOGIN_URL=http://localhost:18000/login
    +LOGOUT_URL=http://localhost:18000/logout
    +REFRESH_ACCESS_TOKEN_ENDPOINT=http://localhost:18000/login_refresh
    +LOGO_URL=https://edx-cdn.org/v3/default/logo.svg
    +LOGO_TRADEMARK_URL=https://edx-cdn.org/v3/default/logo-trademark.svg
    +LOGO_WHITE_URL=https://edx-cdn.org/v3/default/logo-white.svg
    +FAVICON_URL=https://edx-cdn.org/v3/default/favicon.ico
    +USER_INFO_COOKIE_NAME=edx-user-info
    +LANGUAGE_PREFERENCE_COOKIE_NAME=openedx-language-preference
    +ACCESS_TOKEN_COOKIE_NAME=edx-jwt-cookie-header-payload
    diff --git a/example/.gitignore b/example/.gitignore
    new file mode 100644
    index 000000000..2c7410c57
    --- /dev/null
    +++ b/example/.gitignore
    @@ -0,0 +1 @@
    +module.config.js
    diff --git a/example/env.config.js b/example/env.config.js
    index 3df53313a..274add300 100644
    --- a/example/env.config.js
    +++ b/example/env.config.js
    @@ -3,4 +3,29 @@ module.exports = {
       CORRECT_BOOL_VALUE: 'Good, false meant false.  We did not cast a boolean to a string.',
       INCORRECT_BOOL_VALUE: 'Why was a false boolean true?',
       INTEGER_VALUE: 123,
    +  PARAGON_THEME_URLS: {
    +    core: {
    +      urls: {
    +        default: 'https://cdn.jsdelivr.net/npm/@edx/paragon@alphaa/dist/core.min.css',
    +        brandOverride: 'https://cdn.jsdelivr.net/npm/@edx/brand-edx.org@alpha/dist/core.min.css',
    +      },
    +    },
    +    defaults: {
    +      light: 'light',
    +    },
    +    variants: {
    +      light: {
    +        urls: {
    +          default: 'https://cdn.jsdelivr.net/npm/@edx/paragon@alpha/dist/light.min.css',
    +          brandOverride: 'https://cdn.jsdelivr.net/npm/@edx/brand-edx.org@alpha/dist/light.min.css',
    +        },
    +      },
    +      dark: {
    +        urls: {
    +          default: 'https://cdn.jsdelivr.net/npm/@edx/paragon@v21.0.0-alpha.40/dist/light.min.css',
    +          brandOverride: 'https://cdn.jsdelivr.net/npm/@edx/brand-edx.org@2.2.0-alpha.13/dist/light.min.css',
    +        },
    +      },
    +    },
    +  },
     };
    diff --git a/example/package-lock.json b/example/package-lock.json
    index df18d1f99..66fe66655 100644
    --- a/example/package-lock.json
    +++ b/example/package-lock.json
    @@ -9,1608 +9,15884 @@
           "version": "1.0.0",
           "license": "ISC",
           "dependencies": {
    -        "@edx/brand": "npm:@edx/brand-edx.org@2.2.0-alpha.13",
    -        "@edx/paragon": "21.0.0-alpha.40",
    -        "react": "16.14.0",
    -        "react-dom": "16.14.0"
    +        "@edx/brand": "npm:@edx/brand-openedx@1.2.0",
    +        "@edx/frontend-platform": "4.6.0",
    +        "@edx/paragon": "20.45.5",
    +        "react": "17.0.2",
    +        "react-dom": "17.0.2",
    +        "react-redux": "7.2.9",
    +        "react-router-dom": "5.3.4"
           },
           "devDependencies": {
             "@edx/browserslist-config": "1.2.0",
    -        "react-test-renderer": "16.14.0"
    +        "react-test-renderer": "17.0.2"
           }
         },
    -    "node_modules/@babel/runtime": {
    -      "version": "7.22.3",
    -      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz",
    -      "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==",
    +    "node_modules/@aashutoshrathi/word-wrap": {
    +      "version": "1.2.6",
    +      "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
    +      "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/@ampproject/remapping": {
    +      "version": "2.2.1",
    +      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
    +      "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
    +      "peer": true,
           "dependencies": {
    -        "regenerator-runtime": "^0.13.11"
    +        "@jridgewell/gen-mapping": "^0.3.0",
    +        "@jridgewell/trace-mapping": "^0.3.9"
           },
           "engines": {
    -        "node": ">=6.9.0"
    +        "node": ">=6.0.0"
           }
         },
    -    "node_modules/@csstools/cascade-layer-name-parser": {
    -      "version": "1.0.3",
    -      "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.3.tgz",
    -      "integrity": "sha512-ks9ysPP8012j90EQCCFtDsQIXOTCOpTQFIyyoRku06y8CXtUQ+8bXI8KVm9Q9ovwDUVthWuWKZWJD3u1rwnEfw==",
    -      "funding": [
    -        {
    -          "type": "github",
    -          "url": "https://github.com/sponsors/csstools"
    -        },
    -        {
    -          "type": "opencollective",
    -          "url": "https://opencollective.com/csstools"
    -        }
    -      ],
    +    "node_modules/@babel/cli": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.22.5.tgz",
    +      "integrity": "sha512-N5d7MjzwsQ2wppwjhrsicVDhJSqF9labEP/swYiHhio4Ca2XjEehpgPmerjnLQl7BPE59BLud0PTWGYwqFl/cQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jridgewell/trace-mapping": "^0.3.17",
    +        "commander": "^4.0.1",
    +        "convert-source-map": "^1.1.0",
    +        "fs-readdir-recursive": "^1.1.0",
    +        "glob": "^7.2.0",
    +        "make-dir": "^2.1.0",
    +        "slash": "^2.0.0"
    +      },
    +      "bin": {
    +        "babel": "bin/babel.js",
    +        "babel-external-helpers": "bin/babel-external-helpers.js"
    +      },
           "engines": {
    -        "node": "^14 || ^16 || >=18"
    +        "node": ">=6.9.0"
    +      },
    +      "optionalDependencies": {
    +        "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3",
    +        "chokidar": "^3.4.0"
           },
           "peerDependencies": {
    -        "@csstools/css-parser-algorithms": "^2.3.0",
    -        "@csstools/css-tokenizer": "^2.1.1"
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/@csstools/css-parser-algorithms": {
    -      "version": "2.3.0",
    -      "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.0.tgz",
    -      "integrity": "sha512-dTKSIHHWc0zPvcS5cqGP+/TPFUJB0ekJ9dGKvMAFoNuBFhDPBt9OMGNZiIA5vTiNdGHHBeScYPXIGBMnVOahsA==",
    -      "funding": [
    -        {
    -          "type": "github",
    -          "url": "https://github.com/sponsors/csstools"
    -        },
    -        {
    -          "type": "opencollective",
    -          "url": "https://opencollective.com/csstools"
    -        }
    -      ],
    -      "engines": {
    -        "node": "^14 || ^16 || >=18"
    -      },
    -      "peerDependencies": {
    -        "@csstools/css-tokenizer": "^2.1.1"
    +    "node_modules/@babel/cli/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
           }
         },
    -    "node_modules/@csstools/css-tokenizer": {
    -      "version": "2.1.1",
    -      "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz",
    -      "integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==",
    +    "node_modules/@babel/cli/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
           "engines": {
    -        "node": "^14 || ^16 || >=18"
    +        "node": "*"
           },
           "funding": {
    -        "type": "opencollective",
    -        "url": "https://opencollective.com/csstools"
    +        "url": "https://github.com/sponsors/isaacs"
           }
         },
    -    "node_modules/@csstools/media-query-list-parser": {
    -      "version": "2.1.2",
    -      "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.2.tgz",
    -      "integrity": "sha512-M8cFGGwl866o6++vIY7j1AKuq9v57cf+dGepScwCcbut9ypJNr4Cj+LLTWligYUZ0uyhEoJDKt5lvyBfh2L3ZQ==",
    -      "funding": [
    -        {
    -          "type": "github",
    -          "url": "https://github.com/sponsors/csstools"
    -        },
    -        {
    -          "type": "opencollective",
    -          "url": "https://opencollective.com/csstools"
    -        }
    -      ],
    -      "engines": {
    -        "node": "^14 || ^16 || >=18"
    +    "node_modules/@babel/cli/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
           },
    -      "peerDependencies": {
    -        "@csstools/css-parser-algorithms": "^2.3.0",
    -        "@csstools/css-tokenizer": "^2.1.1"
    +      "engines": {
    +        "node": "*"
           }
         },
    -    "node_modules/@edx/brand": {
    -      "name": "@edx/brand-edx.org",
    -      "version": "2.2.0-alpha.13",
    -      "resolved": "https://registry.npmjs.org/@edx/brand-edx.org/-/brand-edx.org-2.2.0-alpha.13.tgz",
    -      "integrity": "sha512-ujgd5nz+/cMbg5H/8exed7Y0v62ihOAbrWLpKj24EjcXWcHdcRypF/vkYJymTq0ZvrGrx9S8LBaCCNiIo/rDMQ=="
    +    "node_modules/@babel/code-frame": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
    +      "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/highlight": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      }
         },
    -    "node_modules/@edx/browserslist-config": {
    -      "version": "1.2.0",
    -      "resolved": "https://registry.npmjs.org/@edx/browserslist-config/-/browserslist-config-1.2.0.tgz",
    -      "integrity": "sha512-T1+6P52Yx7SMkmoIr4O0Q3m/DyRdrLTJbv1xVijdRLFEq1hqdafEs+Ln1423U5LSkTePb9AOkEtL1G0RZLFl1w==",
    -      "dev": true
    +    "node_modules/@babel/compat-data": {
    +      "version": "7.22.9",
    +      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz",
    +      "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6.9.0"
    +      }
         },
    -    "node_modules/@edx/paragon": {
    -      "version": "21.0.0-alpha.40",
    -      "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-21.0.0-alpha.40.tgz",
    -      "integrity": "sha512-Dy5KEhiuCoCR27JinAJW6hhAeYAdLVzt+jszUglO1ZKWQAMBMcJZQcugicuQkGhrVoei8zoFzwjXft3WhKe5Ew==",
    +    "node_modules/@babel/core": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz",
    +      "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==",
    +      "peer": true,
           "dependencies": {
    -        "@popperjs/core": "^2.11.4",
    -        "bootstrap": "^4.6.2",
    -        "chalk": "^4.1.2",
    -        "chroma-js": "^2.4.2",
    -        "classnames": "^2.3.1",
    -        "commander": "^9.4.1",
    -        "email-prop-type": "^3.0.0",
    -        "file-selector": "^0.6.0",
    -        "glob": "^8.0.3",
    -        "lodash.uniqby": "^4.7.0",
    -        "mailto-link": "^2.0.0",
    -        "postcss": "^8.4.21",
    -        "postcss-combine-duplicated-selectors": "^10.0.3",
    -        "postcss-custom-media": "^9.1.2",
    -        "postcss-import": "^15.1.0",
    -        "postcss-map": "^0.11.0",
    -        "postcss-minify": "^1.1.0",
    -        "prop-types": "^15.8.1",
    -        "react-bootstrap": "^1.6.5",
    -        "react-colorful": "^5.6.1",
    -        "react-dropzone": "^14.2.1",
    -        "react-focus-on": "^3.5.4",
    -        "react-loading-skeleton": "^3.1.0",
    -        "react-popper": "^2.2.5",
    -        "react-proptype-conditional-require": "^1.0.4",
    -        "react-responsive": "^8.2.0",
    -        "react-table": "^7.7.0",
    -        "react-transition-group": "^4.4.2",
    -        "sass": "^1.58.3",
    -        "style-dictionary": "^3.7.1",
    -        "tabbable": "^5.3.3",
    -        "uncontrollable": "^7.2.1",
    -        "uuid": "^9.0.0"
    +        "@ampproject/remapping": "^2.2.0",
    +        "@babel/code-frame": "^7.22.5",
    +        "@babel/generator": "^7.22.5",
    +        "@babel/helper-compilation-targets": "^7.22.5",
    +        "@babel/helper-module-transforms": "^7.22.5",
    +        "@babel/helpers": "^7.22.5",
    +        "@babel/parser": "^7.22.5",
    +        "@babel/template": "^7.22.5",
    +        "@babel/traverse": "^7.22.5",
    +        "@babel/types": "^7.22.5",
    +        "convert-source-map": "^1.7.0",
    +        "debug": "^4.1.0",
    +        "gensync": "^1.0.0-beta.2",
    +        "json5": "^2.2.2",
    +        "semver": "^6.3.0"
           },
    -      "bin": {
    -        "build-design-tokens": "tokens/build-tokens.js",
    -        "build-scss": "build-scss.js",
    -        "replace-scss-with-css": "tokens/replace-variables.js"
    +      "engines": {
    +        "node": ">=6.9.0"
           },
    -      "peerDependencies": {
    -        "react": "^16.8.6 || ^17.0.0",
    -        "react-dom": "^16.8.6 || ^17.0.0",
    -        "react-intl": "^5.25.1"
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/babel"
           }
         },
    -    "node_modules/@formatjs/ecma402-abstract": {
    -      "version": "1.11.4",
    -      "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz",
    -      "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==",
    +    "node_modules/@babel/eslint-parser": {
    +      "version": "7.22.9",
    +      "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.9.tgz",
    +      "integrity": "sha512-xdMkt39/nviO/4vpVdrEYPwXCsYIXSSAr6mC7WQsNIlGnuxKyKE7GZjalcnbSWiC4OXGNNN3UQPeHfjSC6sTDA==",
           "peer": true,
           "dependencies": {
    -        "@formatjs/intl-localematcher": "0.2.25",
    -        "tslib": "^2.1.0"
    +        "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1",
    +        "eslint-visitor-keys": "^2.1.0",
    +        "semver": "^6.3.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": ">=7.11.0",
    +        "eslint": "^7.5.0 || ^8.0.0"
           }
         },
    -    "node_modules/@formatjs/fast-memoize": {
    -      "version": "1.2.1",
    -      "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz",
    -      "integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==",
    +    "node_modules/@babel/generator": {
    +      "version": "7.22.9",
    +      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz",
    +      "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==",
           "peer": true,
           "dependencies": {
    -        "tslib": "^2.1.0"
    +        "@babel/types": "^7.22.5",
    +        "@jridgewell/gen-mapping": "^0.3.2",
    +        "@jridgewell/trace-mapping": "^0.3.17",
    +        "jsesc": "^2.5.1"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/@formatjs/icu-messageformat-parser": {
    -      "version": "2.1.0",
    -      "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz",
    -      "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==",
    +    "node_modules/@babel/helper-annotate-as-pure": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
    +      "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
           "peer": true,
           "dependencies": {
    -        "@formatjs/ecma402-abstract": "1.11.4",
    -        "@formatjs/icu-skeleton-parser": "1.3.6",
    -        "tslib": "^2.1.0"
    +        "@babel/types": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/@formatjs/icu-skeleton-parser": {
    -      "version": "1.3.6",
    -      "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz",
    -      "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==",
    +    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz",
    +      "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==",
           "peer": true,
           "dependencies": {
    -        "@formatjs/ecma402-abstract": "1.11.4",
    -        "tslib": "^2.1.0"
    +        "@babel/types": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/@formatjs/intl": {
    -      "version": "2.2.1",
    -      "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.2.1.tgz",
    -      "integrity": "sha512-vgvyUOOrzqVaOFYzTf2d3+ToSkH2JpR7x/4U1RyoHQLmvEaTQvXJ7A2qm1Iy3brGNXC/+/7bUlc3lpH+h/LOJA==",
    +    "node_modules/@babel/helper-compilation-targets": {
    +      "version": "7.22.9",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz",
    +      "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==",
           "peer": true,
           "dependencies": {
    -        "@formatjs/ecma402-abstract": "1.11.4",
    -        "@formatjs/fast-memoize": "1.2.1",
    -        "@formatjs/icu-messageformat-parser": "2.1.0",
    -        "@formatjs/intl-displaynames": "5.4.3",
    -        "@formatjs/intl-listformat": "6.5.3",
    -        "intl-messageformat": "9.13.0",
    -        "tslib": "^2.1.0"
    +        "@babel/compat-data": "^7.22.9",
    +        "@babel/helper-validator-option": "^7.22.5",
    +        "browserslist": "^4.21.9",
    +        "lru-cache": "^5.1.1",
    +        "semver": "^6.3.1"
           },
    -      "peerDependencies": {
    -        "typescript": "^4.5"
    +      "engines": {
    +        "node": ">=6.9.0"
           },
    -      "peerDependenciesMeta": {
    -        "typescript": {
    -          "optional": true
    -        }
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0"
           }
         },
    -    "node_modules/@formatjs/intl-displaynames": {
    -      "version": "5.4.3",
    -      "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-5.4.3.tgz",
    -      "integrity": "sha512-4r12A3mS5dp5hnSaQCWBuBNfi9Amgx2dzhU4lTFfhSxgb5DOAiAbMpg6+7gpWZgl4ahsj3l2r/iHIjdmdXOE2Q==",
    +    "node_modules/@babel/helper-create-class-features-plugin": {
    +      "version": "7.22.9",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz",
    +      "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==",
           "peer": true,
           "dependencies": {
    -        "@formatjs/ecma402-abstract": "1.11.4",
    -        "@formatjs/intl-localematcher": "0.2.25",
    -        "tslib": "^2.1.0"
    +        "@babel/helper-annotate-as-pure": "^7.22.5",
    +        "@babel/helper-environment-visitor": "^7.22.5",
    +        "@babel/helper-function-name": "^7.22.5",
    +        "@babel/helper-member-expression-to-functions": "^7.22.5",
    +        "@babel/helper-optimise-call-expression": "^7.22.5",
    +        "@babel/helper-replace-supers": "^7.22.9",
    +        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
    +        "@babel/helper-split-export-declaration": "^7.22.6",
    +        "semver": "^6.3.1"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0"
           }
         },
    -    "node_modules/@formatjs/intl-listformat": {
    -      "version": "6.5.3",
    -      "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-6.5.3.tgz",
    -      "integrity": "sha512-ozpz515F/+3CU+HnLi5DYPsLa6JoCfBggBSSg/8nOB5LYSFW9+ZgNQJxJ8tdhKYeODT+4qVHX27EeJLoxLGLNg==",
    +    "node_modules/@babel/helper-create-regexp-features-plugin": {
    +      "version": "7.22.9",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz",
    +      "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==",
           "peer": true,
           "dependencies": {
    -        "@formatjs/ecma402-abstract": "1.11.4",
    -        "@formatjs/intl-localematcher": "0.2.25",
    -        "tslib": "^2.1.0"
    +        "@babel/helper-annotate-as-pure": "^7.22.5",
    +        "regexpu-core": "^5.3.1",
    +        "semver": "^6.3.1"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0"
           }
         },
    -    "node_modules/@formatjs/intl-localematcher": {
    -      "version": "0.2.25",
    -      "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz",
    -      "integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==",
    +    "node_modules/@babel/helper-define-polyfill-provider": {
    +      "version": "0.4.2",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz",
    +      "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==",
           "peer": true,
           "dependencies": {
    -        "tslib": "^2.1.0"
    +        "@babel/helper-compilation-targets": "^7.22.6",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "debug": "^4.1.1",
    +        "lodash.debounce": "^4.0.8",
    +        "resolve": "^1.14.2"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
           }
         },
    -    "node_modules/@popperjs/core": {
    -      "version": "2.11.8",
    -      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
    -      "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
    -      "funding": {
    -        "type": "opencollective",
    -        "url": "https://opencollective.com/popperjs"
    +    "node_modules/@babel/helper-environment-visitor": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz",
    +      "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/@restart/context": {
    -      "version": "2.1.4",
    -      "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz",
    -      "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==",
    -      "peerDependencies": {
    -        "react": ">=16.3.2"
    +    "node_modules/@babel/helper-function-name": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
    +      "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/template": "^7.22.5",
    +        "@babel/types": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/@restart/hooks": {
    -      "version": "0.4.9",
    -      "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.9.tgz",
    -      "integrity": "sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==",
    +    "node_modules/@babel/helper-hoist-variables": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
    +      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
    +      "peer": true,
           "dependencies": {
    -        "dequal": "^2.0.2"
    +        "@babel/types": "^7.22.5"
           },
    -      "peerDependencies": {
    -        "react": ">=16.8.0"
    +      "engines": {
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/@types/hoist-non-react-statics": {
    -      "version": "3.3.1",
    -      "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
    -      "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
    +    "node_modules/@babel/helper-member-expression-to-functions": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz",
    +      "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==",
           "peer": true,
           "dependencies": {
    -        "@types/react": "*",
    -        "hoist-non-react-statics": "^3.3.0"
    +        "@babel/types": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/@types/invariant": {
    -      "version": "2.2.35",
    -      "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz",
    -      "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg=="
    -    },
    -    "node_modules/@types/prop-types": {
    -      "version": "15.7.5",
    -      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
    -      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
    -    },
    -    "node_modules/@types/react": {
    -      "version": "18.2.7",
    -      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.7.tgz",
    -      "integrity": "sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==",
    +    "node_modules/@babel/helper-module-imports": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
    +      "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
    +      "peer": true,
           "dependencies": {
    -        "@types/prop-types": "*",
    -        "@types/scheduler": "*",
    -        "csstype": "^3.0.2"
    +        "@babel/types": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/@types/react-transition-group": {
    -      "version": "4.4.6",
    -      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz",
    -      "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==",
    +    "node_modules/@babel/helper-module-transforms": {
    +      "version": "7.22.9",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz",
    +      "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==",
    +      "peer": true,
           "dependencies": {
    -        "@types/react": "*"
    +        "@babel/helper-environment-visitor": "^7.22.5",
    +        "@babel/helper-module-imports": "^7.22.5",
    +        "@babel/helper-simple-access": "^7.22.5",
    +        "@babel/helper-split-export-declaration": "^7.22.6",
    +        "@babel/helper-validator-identifier": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0"
           }
         },
    -    "node_modules/@types/scheduler": {
    -      "version": "0.16.3",
    -      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
    -      "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
    +    "node_modules/@babel/helper-optimise-call-expression": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
    +      "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/types": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      }
         },
    -    "node_modules/@types/warning": {
    -      "version": "3.0.0",
    -      "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
    -      "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA=="
    +    "node_modules/@babel/helper-plugin-utils": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
    +      "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6.9.0"
    +      }
         },
    -    "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==",
    +    "node_modules/@babel/helper-remap-async-to-generator": {
    +      "version": "7.22.9",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz",
    +      "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==",
    +      "peer": true,
           "dependencies": {
    -        "color-convert": "^2.0.1"
    +        "@babel/helper-annotate-as-pure": "^7.22.5",
    +        "@babel/helper-environment-visitor": "^7.22.5",
    +        "@babel/helper-wrap-function": "^7.22.9"
           },
           "engines": {
    -        "node": ">=8"
    +        "node": ">=6.9.0"
           },
    -      "funding": {
    -        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0"
           }
         },
    -    "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==",
    +    "node_modules/@babel/helper-replace-supers": {
    +      "version": "7.22.9",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz",
    +      "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==",
    +      "peer": true,
           "dependencies": {
    -        "normalize-path": "^3.0.0",
    -        "picomatch": "^2.0.4"
    +        "@babel/helper-environment-visitor": "^7.22.5",
    +        "@babel/helper-member-expression-to-functions": "^7.22.5",
    +        "@babel/helper-optimise-call-expression": "^7.22.5"
           },
           "engines": {
    -        "node": ">= 8"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0"
           }
         },
    -    "node_modules/argparse": {
    -      "version": "1.0.10",
    -      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
    -      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
    +    "node_modules/@babel/helper-simple-access": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
    +      "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
    +      "peer": true,
           "dependencies": {
    -        "sprintf-js": "~1.0.2"
    +        "@babel/types": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/aria-hidden": {
    -      "version": "1.2.3",
    -      "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz",
    -      "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==",
    +    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
    +      "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
    +      "peer": true,
           "dependencies": {
    -        "tslib": "^2.0.0"
    +        "@babel/types": "^7.22.5"
           },
           "engines": {
    -        "node": ">=10"
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/assert-ok": {
    -      "version": "1.0.0",
    -      "resolved": "https://registry.npmjs.org/assert-ok/-/assert-ok-1.0.0.tgz",
    -      "integrity": "sha512-lCvYmCpMl8c1tp9ynExhoDEk0gGW43SVVC3RE1VYrrVKhNMy8GHfdiwZdoIM6a605s56bUAbENQxtOC0uZp3wg=="
    +    "node_modules/@babel/helper-split-export-declaration": {
    +      "version": "7.22.6",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
    +      "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/types": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      }
         },
    -    "node_modules/attr-accept": {
    -      "version": "2.2.2",
    -      "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz",
    -      "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==",
    +    "node_modules/@babel/helper-string-parser": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
    +      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
    +      "peer": true,
           "engines": {
    -        "node": ">=4"
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/balanced-match": {
    -      "version": "1.0.2",
    -      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
    -      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
    +    "node_modules/@babel/helper-validator-identifier": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
    +      "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6.9.0"
    +      }
         },
    -    "node_modules/binary-extensions": {
    -      "version": "2.2.0",
    -      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
    -      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
    +    "node_modules/@babel/helper-validator-option": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
    +      "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
    +      "peer": true,
           "engines": {
    -        "node": ">=8"
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/bootstrap": {
    -      "version": "4.6.2",
    -      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz",
    -      "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==",
    -      "funding": [
    -        {
    -          "type": "github",
    -          "url": "https://github.com/sponsors/twbs"
    -        },
    -        {
    -          "type": "opencollective",
    -          "url": "https://opencollective.com/bootstrap"
    -        }
    -      ],
    -      "peerDependencies": {
    -        "jquery": "1.9.1 - 3",
    -        "popper.js": "^1.16.1"
    +    "node_modules/@babel/helper-wrap-function": {
    +      "version": "7.22.9",
    +      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz",
    +      "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-function-name": "^7.22.5",
    +        "@babel/template": "^7.22.5",
    +        "@babel/types": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/brace-expansion": {
    -      "version": "2.0.1",
    -      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
    -      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
    +    "node_modules/@babel/helpers": {
    +      "version": "7.22.6",
    +      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz",
    +      "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==",
    +      "peer": true,
           "dependencies": {
    -        "balanced-match": "^1.0.0"
    +        "@babel/template": "^7.22.5",
    +        "@babel/traverse": "^7.22.6",
    +        "@babel/types": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/braces": {
    -      "version": "3.0.2",
    -      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
    -      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
    +    "node_modules/@babel/highlight": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
    +      "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
    +      "peer": true,
           "dependencies": {
    -        "fill-range": "^7.0.1"
    +        "@babel/helper-validator-identifier": "^7.22.5",
    +        "chalk": "^2.0.0",
    +        "js-tokens": "^4.0.0"
           },
           "engines": {
    -        "node": ">=8"
    +        "node": ">=6.9.0"
           }
         },
    -    "node_modules/camel-case": {
    -      "version": "4.1.2",
    -      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
    -      "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
    +    "node_modules/@babel/highlight/node_modules/ansi-styles": {
    +      "version": "3.2.1",
    +      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
    +      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
    +      "peer": true,
           "dependencies": {
    -        "pascal-case": "^3.1.2",
    -        "tslib": "^2.0.3"
    +        "color-convert": "^1.9.0"
    +      },
    +      "engines": {
    +        "node": ">=4"
           }
         },
    -    "node_modules/capital-case": {
    -      "version": "1.0.4",
    -      "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz",
    -      "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==",
    +    "node_modules/@babel/highlight/node_modules/chalk": {
    +      "version": "2.4.2",
    +      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
    +      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
    +      "peer": true,
           "dependencies": {
    -        "no-case": "^3.0.4",
    -        "tslib": "^2.0.3",
    -        "upper-case-first": "^2.0.2"
    +        "ansi-styles": "^3.2.1",
    +        "escape-string-regexp": "^1.0.5",
    +        "supports-color": "^5.3.0"
    +      },
    +      "engines": {
    +        "node": ">=4"
           }
         },
    -    "node_modules/cast-array": {
    -      "version": "1.0.1",
    -      "resolved": "https://registry.npmjs.org/cast-array/-/cast-array-1.0.1.tgz",
    -      "integrity": "sha512-EiqtV+M9L42wd0IRgYjgVGDq7vdNBUUrdecd03QReJp8pIr59o2A1b0XfP+aCUlzLKx2E7zVetaogeJCtiHa+w==",
    +    "node_modules/@babel/highlight/node_modules/color-convert": {
    +      "version": "1.9.3",
    +      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
    +      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
    +      "peer": true,
           "dependencies": {
    -        "isarray": "0.0.1"
    +        "color-name": "1.1.3"
           }
         },
    -    "node_modules/chalk": {
    -      "version": "4.1.2",
    -      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
    -      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
    +    "node_modules/@babel/highlight/node_modules/color-name": {
    +      "version": "1.1.3",
    +      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
    +      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
    +      "peer": true
    +    },
    +    "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
    +      "version": "1.0.5",
    +      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
    +      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.8.0"
    +      }
    +    },
    +    "node_modules/@babel/highlight/node_modules/has-flag": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
    +      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/@babel/highlight/node_modules/supports-color": {
    +      "version": "5.5.0",
    +      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
    +      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
    +      "peer": true,
           "dependencies": {
    -        "ansi-styles": "^4.1.0",
    -        "supports-color": "^7.1.0"
    +        "has-flag": "^3.0.0"
           },
           "engines": {
    -        "node": ">=10"
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/@babel/parser": {
    +      "version": "7.22.7",
    +      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz",
    +      "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==",
    +      "peer": true,
    +      "bin": {
    +        "parser": "bin/babel-parser.js"
           },
    -      "funding": {
    -        "url": "https://github.com/chalk/chalk?sponsor=1"
    +      "engines": {
    +        "node": ">=6.0.0"
           }
         },
    -    "node_modules/change-case": {
    -      "version": "4.1.2",
    -      "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz",
    -      "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==",
    +    "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz",
    +      "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==",
    +      "peer": true,
           "dependencies": {
    -        "camel-case": "^4.1.2",
    -        "capital-case": "^1.0.4",
    -        "constant-case": "^3.0.4",
    -        "dot-case": "^3.0.4",
    -        "header-case": "^2.0.4",
    -        "no-case": "^3.0.4",
    -        "param-case": "^3.0.4",
    -        "pascal-case": "^3.1.2",
    -        "path-case": "^3.0.4",
    -        "sentence-case": "^3.0.4",
    -        "snake-case": "^3.0.4",
    -        "tslib": "^2.0.3"
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0"
           }
         },
    -    "node_modules/chokidar": {
    -      "version": "3.5.3",
    -      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
    -      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
    -      "funding": [
    -        {
    -          "type": "individual",
    -          "url": "https://paulmillr.com/funding/"
    -        }
    -      ],
    +    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz",
    +      "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==",
    +      "peer": true,
           "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"
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
    +        "@babel/plugin-transform-optional-chaining": "^7.22.5"
           },
           "engines": {
    -        "node": ">= 8.10.0"
    +        "node": ">=6.9.0"
           },
    -      "optionalDependencies": {
    -        "fsevents": "~2.3.2"
    +      "peerDependencies": {
    +        "@babel/core": "^7.13.0"
           }
         },
    -    "node_modules/chroma-js": {
    -      "version": "2.4.2",
    -      "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz",
    -      "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A=="
    -    },
    -    "node_modules/classnames": {
    -      "version": "2.3.2",
    -      "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
    -      "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
    +    "node_modules/@babel/plugin-proposal-class-properties": {
    +      "version": "7.18.6",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
    +      "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-create-class-features-plugin": "^7.18.6",
    +        "@babel/helper-plugin-utils": "^7.18.6"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
         },
    -    "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==",
    +    "node_modules/@babel/plugin-proposal-object-rest-spread": {
    +      "version": "7.20.7",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
    +      "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
    +      "peer": true,
           "dependencies": {
    -        "color-name": "~1.1.4"
    +        "@babel/compat-data": "^7.20.5",
    +        "@babel/helper-compilation-targets": "^7.20.7",
    +        "@babel/helper-plugin-utils": "^7.20.2",
    +        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
    +        "@babel/plugin-transform-parameters": "^7.20.7"
           },
           "engines": {
    -        "node": ">=7.0.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.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=="
    +    "node_modules/@babel/plugin-proposal-private-property-in-object": {
    +      "version": "7.21.0-placeholder-for-preset-env.2",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
    +      "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
         },
    -    "node_modules/commander": {
    -      "version": "9.5.0",
    -      "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
    -      "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
    +    "node_modules/@babel/plugin-proposal-unicode-property-regex": {
    +      "version": "7.18.6",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
    +      "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
    +        "@babel/helper-plugin-utils": "^7.18.6"
    +      },
           "engines": {
    -        "node": "^12.20.0 || >=14"
    +        "node": ">=4"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/concat-map": {
    -      "version": "0.0.1",
    -      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
    -      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
    +    "node_modules/@babel/plugin-syntax-async-generators": {
    +      "version": "7.8.4",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
    +      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.8.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
         },
    -    "node_modules/constant-case": {
    -      "version": "3.0.4",
    -      "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz",
    -      "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
    +    "node_modules/@babel/plugin-syntax-bigint": {
    +      "version": "7.8.3",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
    +      "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
    +      "peer": true,
           "dependencies": {
    -        "no-case": "^3.0.4",
    -        "tslib": "^2.0.3",
    -        "upper-case": "^2.0.2"
    +        "@babel/helper-plugin-utils": "^7.8.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/css-mediaquery": {
    -      "version": "0.1.2",
    -      "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz",
    -      "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q=="
    +    "node_modules/@babel/plugin-syntax-class-properties": {
    +      "version": "7.12.13",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
    +      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.12.13"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-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==",
    -      "bin": {
    -        "cssesc": "bin/cssesc"
    +    "node_modules/@babel/plugin-syntax-class-static-block": {
    +      "version": "7.14.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
    +      "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.14.5"
           },
           "engines": {
    -        "node": ">=4"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/csstype": {
    -      "version": "3.1.2",
    -      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
    -      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
    +    "node_modules/@babel/plugin-syntax-dynamic-import": {
    +      "version": "7.8.3",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
    +      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.8.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
         },
    -    "node_modules/decode-uri-component": {
    -      "version": "0.2.2",
    -      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
    -      "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
    +    "node_modules/@babel/plugin-syntax-export-namespace-from": {
    +      "version": "7.8.3",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
    +      "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.8.3"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@babel/plugin-syntax-import-assertions": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz",
    +      "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
           "engines": {
    -        "node": ">=0.10"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/dequal": {
    -      "version": "2.0.3",
    -      "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
    -      "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
    +    "node_modules/@babel/plugin-syntax-import-attributes": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz",
    +      "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
           "engines": {
    -        "node": ">=6"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/detect-node-es": {
    -      "version": "1.1.0",
    -      "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
    -      "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
    +    "node_modules/@babel/plugin-syntax-import-meta": {
    +      "version": "7.10.4",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
    +      "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.10.4"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
         },
    -    "node_modules/dom-helpers": {
    -      "version": "5.2.1",
    -      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
    -      "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
    +    "node_modules/@babel/plugin-syntax-json-strings": {
    +      "version": "7.8.3",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
    +      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
    +      "peer": true,
           "dependencies": {
    -        "@babel/runtime": "^7.8.7",
    -        "csstype": "^3.0.2"
    +        "@babel/helper-plugin-utils": "^7.8.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/dot-case": {
    -      "version": "3.0.4",
    -      "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
    -      "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
    +    "node_modules/@babel/plugin-syntax-jsx": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
    +      "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
    +      "peer": true,
           "dependencies": {
    -        "no-case": "^3.0.4",
    -        "tslib": "^2.0.3"
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/email-prop-type": {
    -      "version": "3.0.1",
    -      "resolved": "https://registry.npmjs.org/email-prop-type/-/email-prop-type-3.0.1.tgz",
    -      "integrity": "sha512-tONZGMEOOkadp5OBftuVXU8DsceWmINxYK+pqPFB4LT5ODjrPX/esel3WGqbV7d6in5/MnZE4n4QcqOr4gh7dg==",
    +    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
    +      "version": "7.10.4",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
    +      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
    +      "peer": true,
           "dependencies": {
    -        "email-validator": "^2.0.4"
    +        "@babel/helper-plugin-utils": "^7.10.4"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/email-validator": {
    -      "version": "2.0.4",
    -      "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz",
    -      "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==",
    -      "engines": {
    -        "node": ">4.0"
    +    "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
    +      "version": "7.8.3",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
    +      "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.8.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/esprima": {
    -      "version": "4.0.1",
    -      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
    -      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
    -      "bin": {
    -        "esparse": "bin/esparse.js",
    -        "esvalidate": "bin/esvalidate.js"
    +    "node_modules/@babel/plugin-syntax-numeric-separator": {
    +      "version": "7.10.4",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
    +      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.10.4"
           },
    -      "engines": {
    -        "node": ">=4"
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/file-selector": {
    -      "version": "0.6.0",
    -      "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz",
    -      "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==",
    +    "node_modules/@babel/plugin-syntax-object-rest-spread": {
    +      "version": "7.8.3",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
    +      "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
    +      "peer": true,
           "dependencies": {
    -        "tslib": "^2.4.0"
    +        "@babel/helper-plugin-utils": "^7.8.0"
           },
    -      "engines": {
    -        "node": ">= 12"
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/fill-range": {
    -      "version": "7.0.1",
    -      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
    -      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
    +    "node_modules/@babel/plugin-syntax-optional-catch-binding": {
    +      "version": "7.8.3",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
    +      "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
    +      "peer": true,
           "dependencies": {
    -        "to-regex-range": "^5.0.1"
    +        "@babel/helper-plugin-utils": "^7.8.0"
           },
    -      "engines": {
    -        "node": ">=8"
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/filter-obj": {
    -      "version": "1.1.0",
    -      "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
    -      "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==",
    -      "engines": {
    -        "node": ">=0.10.0"
    +    "node_modules/@babel/plugin-syntax-optional-chaining": {
    +      "version": "7.8.3",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
    +      "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.8.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/focus-lock": {
    -      "version": "0.11.6",
    -      "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.6.tgz",
    -      "integrity": "sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==",
    +    "node_modules/@babel/plugin-syntax-private-property-in-object": {
    +      "version": "7.14.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
    +      "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
    +      "peer": true,
           "dependencies": {
    -        "tslib": "^2.0.3"
    +        "@babel/helper-plugin-utils": "^7.14.5"
           },
           "engines": {
    -        "node": ">=10"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/fs-extra": {
    -      "version": "10.1.0",
    -      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
    -      "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
    +    "node_modules/@babel/plugin-syntax-top-level-await": {
    +      "version": "7.14.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
    +      "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
    +      "peer": true,
           "dependencies": {
    -        "graceful-fs": "^4.2.0",
    -        "jsonfile": "^6.0.1",
    -        "universalify": "^2.0.0"
    +        "@babel/helper-plugin-utils": "^7.14.5"
           },
           "engines": {
    -        "node": ">=12"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/fs.realpath": {
    -      "version": "1.0.0",
    -      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
    -      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
    -    },
    -    "node_modules/fsevents": {
    -      "version": "2.3.2",
    -      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
    -      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
    -      "hasInstallScript": true,
    -      "optional": true,
    -      "os": [
    -        "darwin"
    -      ],
    +    "node_modules/@babel/plugin-syntax-typescript": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
    +      "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
           "engines": {
    -        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/function-bind": {
    -      "version": "1.1.1",
    -      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
    -      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
    -    },
    -    "node_modules/get-nonce": {
    -      "version": "1.0.1",
    -      "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
    -      "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
    +    "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
    +      "version": "7.18.6",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
    +      "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
    +        "@babel/helper-plugin-utils": "^7.18.6"
    +      },
           "engines": {
    -        "node": ">=6"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0"
           }
         },
    -    "node_modules/glob": {
    -      "version": "8.1.0",
    -      "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
    -      "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
    +    "node_modules/@babel/plugin-transform-arrow-functions": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz",
    +      "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==",
    +      "peer": true,
           "dependencies": {
    -        "fs.realpath": "^1.0.0",
    -        "inflight": "^1.0.4",
    -        "inherits": "2",
    -        "minimatch": "^5.0.1",
    -        "once": "^1.3.0"
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": ">=12"
    +        "node": ">=6.9.0"
           },
    -      "funding": {
    -        "url": "https://github.com/sponsors/isaacs"
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "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==",
    +    "node_modules/@babel/plugin-transform-async-generator-functions": {
    +      "version": "7.22.7",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz",
    +      "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==",
    +      "peer": true,
           "dependencies": {
    -        "is-glob": "^4.0.1"
    +        "@babel/helper-environment-visitor": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-remap-async-to-generator": "^7.22.5",
    +        "@babel/plugin-syntax-async-generators": "^7.8.4"
           },
           "engines": {
    -        "node": ">= 6"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "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=="
    -    },
    -    "node_modules/has": {
    -      "version": "1.0.3",
    -      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
    -      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
    +    "node_modules/@babel/plugin-transform-async-to-generator": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz",
    +      "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==",
    +      "peer": true,
           "dependencies": {
    -        "function-bind": "^1.1.1"
    +        "@babel/helper-module-imports": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-remap-async-to-generator": "^7.22.5"
           },
           "engines": {
    -        "node": ">= 0.4.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "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==",
    +    "node_modules/@babel/plugin-transform-block-scoped-functions": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz",
    +      "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
           "engines": {
    -        "node": ">=8"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/header-case": {
    -      "version": "2.0.4",
    -      "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz",
    -      "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==",
    +    "node_modules/@babel/plugin-transform-block-scoping": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz",
    +      "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==",
    +      "peer": true,
           "dependencies": {
    -        "capital-case": "^1.0.4",
    -        "tslib": "^2.0.3"
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/hoist-non-react-statics": {
    -      "version": "3.3.2",
    -      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
    -      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
    +    "node_modules/@babel/plugin-transform-class-properties": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz",
    +      "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==",
           "peer": true,
           "dependencies": {
    -        "react-is": "^16.7.0"
    +        "@babel/helper-create-class-features-plugin": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/hyphenate-style-name": {
    -      "version": "1.0.4",
    -      "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
    -      "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ=="
    -    },
    -    "node_modules/immutable": {
    -      "version": "4.3.1",
    -      "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz",
    -      "integrity": "sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A=="
    -    },
    -    "node_modules/inflight": {
    -      "version": "1.0.6",
    -      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
    -      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
    +    "node_modules/@babel/plugin-transform-class-static-block": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz",
    +      "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==",
    +      "peer": true,
           "dependencies": {
    -        "once": "^1.3.0",
    -        "wrappy": "1"
    +        "@babel/helper-create-class-features-plugin": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-class-static-block": "^7.14.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.12.0"
           }
         },
    -    "node_modules/inherits": {
    -      "version": "2.0.4",
    -      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
    -      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
    -    },
    -    "node_modules/intl-messageformat": {
    -      "version": "9.13.0",
    -      "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz",
    -      "integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==",
    +    "node_modules/@babel/plugin-transform-classes": {
    +      "version": "7.22.6",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz",
    +      "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==",
           "peer": true,
           "dependencies": {
    -        "@formatjs/ecma402-abstract": "1.11.4",
    -        "@formatjs/fast-memoize": "1.2.1",
    -        "@formatjs/icu-messageformat-parser": "2.1.0",
    -        "tslib": "^2.1.0"
    +        "@babel/helper-annotate-as-pure": "^7.22.5",
    +        "@babel/helper-compilation-targets": "^7.22.6",
    +        "@babel/helper-environment-visitor": "^7.22.5",
    +        "@babel/helper-function-name": "^7.22.5",
    +        "@babel/helper-optimise-call-expression": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-replace-supers": "^7.22.5",
    +        "@babel/helper-split-export-declaration": "^7.22.6",
    +        "globals": "^11.1.0"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/invariant": {
    -      "version": "2.2.4",
    -      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
    -      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
    +    "node_modules/@babel/plugin-transform-computed-properties": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz",
    +      "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==",
    +      "peer": true,
           "dependencies": {
    -        "loose-envify": "^1.0.0"
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/template": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "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==",
    +    "node_modules/@babel/plugin-transform-destructuring": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz",
    +      "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==",
    +      "peer": true,
           "dependencies": {
    -        "binary-extensions": "^2.0.0"
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": ">=8"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/is-core-module": {
    -      "version": "2.12.1",
    -      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
    -      "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
    +    "node_modules/@babel/plugin-transform-dotall-regex": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz",
    +      "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==",
    +      "peer": true,
           "dependencies": {
    -        "has": "^1.0.3"
    +        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
    -      "funding": {
    -        "url": "https://github.com/sponsors/ljharb"
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/is-extglob": {
    -      "version": "2.1.1",
    -      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
    -      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
    +    "node_modules/@babel/plugin-transform-duplicate-keys": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz",
    +      "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
           "engines": {
    -        "node": ">=0.10.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "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==",
    +    "node_modules/@babel/plugin-transform-dynamic-import": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz",
    +      "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==",
    +      "peer": true,
           "dependencies": {
    -        "is-extglob": "^2.1.1"
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
           },
           "engines": {
    -        "node": ">=0.10.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-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==",
    +    "node_modules/@babel/plugin-transform-exponentiation-operator": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz",
    +      "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
           "engines": {
    -        "node": ">=0.12.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/isarray": {
    -      "version": "0.0.1",
    -      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
    -      "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
    -    },
    -    "node_modules/jquery": {
    -      "version": "3.7.0",
    -      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.0.tgz",
    -      "integrity": "sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==",
    -      "peer": true
    -    },
    -    "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=="
    -    },
    -    "node_modules/js-yaml": {
    -      "version": "3.14.1",
    -      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
    -      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
    +    "node_modules/@babel/plugin-transform-export-namespace-from": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz",
    +      "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==",
    +      "peer": true,
           "dependencies": {
    -        "argparse": "^1.0.7",
    -        "esprima": "^4.0.0"
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
           },
    -      "bin": {
    -        "js-yaml": "bin/js-yaml.js"
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/json5": {
    -      "version": "2.2.3",
    -      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
    -      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
    -      "bin": {
    -        "json5": "lib/cli.js"
    +    "node_modules/@babel/plugin-transform-for-of": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz",
    +      "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": ">=6"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/jsonc-parser": {
    -      "version": "3.2.0",
    -      "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
    -      "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w=="
    -    },
    -    "node_modules/jsonfile": {
    -      "version": "6.1.0",
    -      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
    -      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
    +    "node_modules/@babel/plugin-transform-function-name": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz",
    +      "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==",
    +      "peer": true,
           "dependencies": {
    -        "universalify": "^2.0.0"
    +        "@babel/helper-compilation-targets": "^7.22.5",
    +        "@babel/helper-function-name": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
    -      "optionalDependencies": {
    -        "graceful-fs": "^4.1.6"
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/lodash": {
    -      "version": "4.17.21",
    -      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
    -      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
    -    },
    -    "node_modules/lodash.uniqby": {
    -      "version": "4.7.0",
    -      "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
    -      "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww=="
    -    },
    -    "node_modules/loose-envify": {
    -      "version": "1.4.0",
    -      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
    -      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
    +    "node_modules/@babel/plugin-transform-json-strings": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz",
    +      "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==",
    +      "peer": true,
           "dependencies": {
    -        "js-tokens": "^3.0.0 || ^4.0.0"
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-json-strings": "^7.8.3"
           },
    -      "bin": {
    -        "loose-envify": "cli.js"
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/lower-case": {
    -      "version": "2.0.2",
    -      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
    -      "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
    +    "node_modules/@babel/plugin-transform-literals": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz",
    +      "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==",
    +      "peer": true,
           "dependencies": {
    -        "tslib": "^2.0.3"
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/mailto-link": {
    -      "version": "2.0.0",
    -      "resolved": "https://registry.npmjs.org/mailto-link/-/mailto-link-2.0.0.tgz",
    -      "integrity": "sha512-b5FErkZ4t6mpH1IFZSw7Mm2IQHXQ2R0/5Q4xd7Rv8dVkWvE54mFG/UW7HjfFazXFjXTNsM+dSX2tTeIDrV9K9A==",
    +    "node_modules/@babel/plugin-transform-logical-assignment-operators": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz",
    +      "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==",
    +      "peer": true,
           "dependencies": {
    -        "assert-ok": "~1.0.0",
    -        "cast-array": "~1.0.1",
    -        "object-filter": "~1.0.2",
    -        "query-string": "~7.0.0"
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
           },
           "engines": {
    -        "node": ">= 12"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/matchmediaquery": {
    -      "version": "0.3.1",
    -      "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz",
    -      "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==",
    +    "node_modules/@babel/plugin-transform-member-expression-literals": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz",
    +      "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==",
    +      "peer": true,
           "dependencies": {
    -        "css-mediaquery": "^0.1.2"
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/minimatch": {
    -      "version": "5.1.6",
    -      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
    -      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
    +    "node_modules/@babel/plugin-transform-modules-amd": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz",
    +      "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==",
    +      "peer": true,
           "dependencies": {
    -        "brace-expansion": "^2.0.1"
    +        "@babel/helper-module-transforms": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": ">=10"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/nanoid": {
    -      "version": "3.3.6",
    -      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
    -      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
    -      "funding": [
    -        {
    -          "type": "github",
    -          "url": "https://github.com/sponsors/ai"
    -        }
    -      ],
    -      "bin": {
    -        "nanoid": "bin/nanoid.cjs"
    +    "node_modules/@babel/plugin-transform-modules-commonjs": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz",
    +      "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-module-transforms": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-simple-access": "^7.22.5"
           },
           "engines": {
    -        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/no-case": {
    -      "version": "3.0.4",
    -      "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
    -      "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
    +    "node_modules/@babel/plugin-transform-modules-systemjs": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz",
    +      "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==",
    +      "peer": true,
           "dependencies": {
    -        "lower-case": "^2.0.2",
    -        "tslib": "^2.0.3"
    +        "@babel/helper-hoist-variables": "^7.22.5",
    +        "@babel/helper-module-transforms": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-validator-identifier": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "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==",
    +    "node_modules/@babel/plugin-transform-modules-umd": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz",
    +      "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-module-transforms": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
           "engines": {
    -        "node": ">=0.10.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/object-assign": {
    -      "version": "4.1.1",
    -      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
    -      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
    +    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
    +      "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
           "engines": {
    -        "node": ">=0.10.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0"
           }
         },
    -    "node_modules/object-filter": {
    -      "version": "1.0.2",
    -      "resolved": "https://registry.npmjs.org/object-filter/-/object-filter-1.0.2.tgz",
    -      "integrity": "sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA=="
    -    },
    -    "node_modules/once": {
    -      "version": "1.4.0",
    -      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
    -      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
    +    "node_modules/@babel/plugin-transform-new-target": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz",
    +      "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==",
    +      "peer": true,
           "dependencies": {
    -        "wrappy": "1"
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/param-case": {
    -      "version": "3.0.4",
    -      "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
    -      "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
    +    "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz",
    +      "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==",
    +      "peer": true,
           "dependencies": {
    -        "dot-case": "^3.0.4",
    -        "tslib": "^2.0.3"
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/pascal-case": {
    -      "version": "3.1.2",
    -      "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
    -      "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
    +    "node_modules/@babel/plugin-transform-numeric-separator": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz",
    +      "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==",
    +      "peer": true,
           "dependencies": {
    -        "no-case": "^3.0.4",
    -        "tslib": "^2.0.3"
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/path-case": {
    -      "version": "3.0.4",
    -      "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz",
    -      "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==",
    +    "node_modules/@babel/plugin-transform-object-rest-spread": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz",
    +      "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==",
    +      "peer": true,
           "dependencies": {
    -        "dot-case": "^3.0.4",
    -        "tslib": "^2.0.3"
    +        "@babel/compat-data": "^7.22.5",
    +        "@babel/helper-compilation-targets": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
    +        "@babel/plugin-transform-parameters": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/path-is-absolute": {
    -      "version": "1.0.1",
    -      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
    -      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
    +    "node_modules/@babel/plugin-transform-object-super": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz",
    +      "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-replace-supers": "^7.22.5"
    +      },
           "engines": {
    -        "node": ">=0.10.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/path-parse": {
    -      "version": "1.0.7",
    -      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
    -      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
    -    },
    -    "node_modules/picocolors": {
    -      "version": "1.0.0",
    -      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
    -      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
    -    },
    -    "node_modules/picomatch": {
    -      "version": "2.3.1",
    -      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
    -      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
    +    "node_modules/@babel/plugin-transform-optional-catch-binding": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz",
    +      "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
    +      },
           "engines": {
    -        "node": ">=8.6"
    +        "node": ">=6.9.0"
           },
    -      "funding": {
    -        "url": "https://github.com/sponsors/jonschlinkert"
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/pify": {
    -      "version": "2.3.0",
    -      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
    -      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
    +    "node_modules/@babel/plugin-transform-optional-chaining": {
    +      "version": "7.22.6",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz",
    +      "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
    +        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
    +      },
           "engines": {
    -        "node": ">=0.10.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/popper.js": {
    -      "version": "1.16.1",
    -      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
    -      "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
    -      "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1",
    +    "node_modules/@babel/plugin-transform-parameters": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz",
    +      "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==",
           "peer": true,
    -      "funding": {
    -        "type": "opencollective",
    -        "url": "https://opencollective.com/popperjs"
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/postcss": {
    -      "version": "8.4.27",
    -      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz",
    -      "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==",
    -      "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"
    -        }
    -      ],
    +    "node_modules/@babel/plugin-transform-private-methods": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz",
    +      "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==",
    +      "peer": true,
           "dependencies": {
    -        "nanoid": "^3.3.6",
    -        "picocolors": "^1.0.0",
    -        "source-map-js": "^1.0.2"
    +        "@babel/helper-create-class-features-plugin": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": "^10 || ^12 || >=14"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/postcss-combine-duplicated-selectors": {
    -      "version": "10.0.3",
    -      "resolved": "https://registry.npmjs.org/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-10.0.3.tgz",
    -      "integrity": "sha512-IP0BmwFloCskv7DV7xqvzDXqMHpwdczJa6ZvIW8abgHdcIHs9mCJX2ltFhu3EwA51ozp13DByng30+Ke+eIExA==",
    +    "node_modules/@babel/plugin-transform-private-property-in-object": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz",
    +      "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==",
    +      "peer": true,
           "dependencies": {
    -        "postcss-selector-parser": "^6.0.4"
    +        "@babel/helper-annotate-as-pure": "^7.22.5",
    +        "@babel/helper-create-class-features-plugin": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
           },
           "engines": {
    -        "node": "^10.0.0 || ^12.0.0 || >=14.0.0"
    +        "node": ">=6.9.0"
           },
           "peerDependencies": {
    -        "postcss": "^8.1.0"
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/postcss-custom-media": {
    -      "version": "9.1.5",
    -      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-9.1.5.tgz",
    -      "integrity": "sha512-GStyWMz7Qbo/Gtw1xVspzVSX8eipgNg4lpsO3CAeY4/A1mzok+RV6MCv3fg62trWijh/lYEj6vps4o8JcBBpDA==",
    -      "funding": [
    -        {
    -          "type": "github",
    -          "url": "https://github.com/sponsors/csstools"
    -        },
    -        {
    -          "type": "opencollective",
    -          "url": "https://opencollective.com/csstools"
    -        }
    -      ],
    +    "node_modules/@babel/plugin-transform-property-literals": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz",
    +      "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==",
    +      "peer": true,
           "dependencies": {
    -        "@csstools/cascade-layer-name-parser": "^1.0.2",
    -        "@csstools/css-parser-algorithms": "^2.2.0",
    -        "@csstools/css-tokenizer": "^2.1.1",
    -        "@csstools/media-query-list-parser": "^2.1.1"
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": "^14 || ^16 || >=18"
    +        "node": ">=6.9.0"
           },
           "peerDependencies": {
    -        "postcss": "^8.4"
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/postcss-import": {
    -      "version": "15.1.0",
    -      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
    -      "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
    +    "node_modules/@babel/plugin-transform-react-constant-elements": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.22.5.tgz",
    +      "integrity": "sha512-BF5SXoO+nX3h5OhlN78XbbDrBOffv+AxPP2ENaJOVqjWCgBDeOY3WcaUcddutGSfoap+5NEQ/q/4I3WZIvgkXA==",
    +      "peer": true,
           "dependencies": {
    -        "postcss-value-parser": "^4.0.0",
    -        "read-cache": "^1.0.0",
    -        "resolve": "^1.1.7"
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": ">=14.0.0"
    +        "node": ">=6.9.0"
           },
           "peerDependencies": {
    -        "postcss": "^8.0.0"
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/postcss-map": {
    -      "version": "0.11.0",
    -      "resolved": "https://registry.npmjs.org/postcss-map/-/postcss-map-0.11.0.tgz",
    -      "integrity": "sha512-cgHYZrH9aAMds90upYUPhYz8xnAcRD45SwuNns/nQHONIrPQDhpwk3JLsAQGOndQxnRVXfB6nB+3WqSMy8fqlA==",
    +    "node_modules/@babel/plugin-transform-react-display-name": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz",
    +      "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==",
    +      "peer": true,
           "dependencies": {
    -        "js-yaml": "^3.12.0",
    -        "postcss": "^7.0.2",
    -        "reduce-function-call": "^1.0.1"
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": ">=6.0.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/postcss-map/node_modules/picocolors": {
    -      "version": "0.2.1",
    -      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz",
    -      "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA=="
    -    },
    -    "node_modules/postcss-map/node_modules/postcss": {
    -      "version": "7.0.39",
    -      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz",
    -      "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
    +    "node_modules/@babel/plugin-transform-react-jsx": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz",
    +      "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==",
    +      "peer": true,
           "dependencies": {
    -        "picocolors": "^0.2.1",
    -        "source-map": "^0.6.1"
    +        "@babel/helper-annotate-as-pure": "^7.22.5",
    +        "@babel/helper-module-imports": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-jsx": "^7.22.5",
    +        "@babel/types": "^7.22.5"
           },
           "engines": {
    -        "node": ">=6.0.0"
    +        "node": ">=6.9.0"
           },
    -      "funding": {
    -        "type": "opencollective",
    -        "url": "https://opencollective.com/postcss/"
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/postcss-minify": {
    -      "version": "1.1.0",
    -      "resolved": "https://registry.npmjs.org/postcss-minify/-/postcss-minify-1.1.0.tgz",
    -      "integrity": "sha512-9D64ueIW0DL2FdLajQTlXrnTN8Ox9NjuXqigKMmB819RhdClNPYx5Zp3i5x0ghjjy3vGrLBBYEYvJjY/1eMNbw==",
    +    "node_modules/@babel/plugin-transform-react-jsx-development": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz",
    +      "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==",
    +      "peer": true,
           "dependencies": {
    -        "postcss-selector-parser": "^6.0",
    -        "postcss-value-parser": "^4.1"
    +        "@babel/plugin-transform-react-jsx": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           },
           "peerDependencies": {
    -        "postcss": "^8.0"
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/postcss-selector-parser": {
    -      "version": "6.0.13",
    -      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
    -      "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
    +    "node_modules/@babel/plugin-transform-react-pure-annotations": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz",
    +      "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==",
    +      "peer": true,
           "dependencies": {
    -        "cssesc": "^3.0.0",
    -        "util-deprecate": "^1.0.2"
    +        "@babel/helper-annotate-as-pure": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": ">=4"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "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=="
    -    },
    -    "node_modules/prop-types": {
    -      "version": "15.8.1",
    -      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
    -      "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
    +    "node_modules/@babel/plugin-transform-regenerator": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz",
    +      "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==",
    +      "peer": true,
           "dependencies": {
    -        "loose-envify": "^1.4.0",
    -        "object-assign": "^4.1.1",
    -        "react-is": "^16.13.1"
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "regenerator-transform": "^0.15.1"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/prop-types-extra": {
    -      "version": "1.1.1",
    -      "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz",
    -      "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==",
    +    "node_modules/@babel/plugin-transform-reserved-words": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz",
    +      "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==",
    +      "peer": true,
           "dependencies": {
    -        "react-is": "^16.3.2",
    -        "warning": "^4.0.0"
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           },
           "peerDependencies": {
    -        "react": ">=0.14.0"
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/query-string": {
    -      "version": "7.0.1",
    -      "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz",
    -      "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==",
    +    "node_modules/@babel/plugin-transform-shorthand-properties": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz",
    +      "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==",
    +      "peer": true,
           "dependencies": {
    -        "decode-uri-component": "^0.2.0",
    -        "filter-obj": "^1.1.0",
    -        "split-on-first": "^1.0.0",
    -        "strict-uri-encode": "^2.0.0"
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": ">=6"
    +        "node": ">=6.9.0"
           },
    -      "funding": {
    -        "url": "https://github.com/sponsors/sindresorhus"
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/react": {
    -      "version": "16.14.0",
    -      "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
    -      "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
    +    "node_modules/@babel/plugin-transform-spread": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz",
    +      "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==",
    +      "peer": true,
           "dependencies": {
    -        "loose-envify": "^1.1.0",
    -        "object-assign": "^4.1.1",
    -        "prop-types": "^15.6.2"
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
           },
           "engines": {
    -        "node": ">=0.10.0"
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/react-bootstrap": {
    -      "version": "1.6.7",
    -      "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.7.tgz",
    -      "integrity": "sha512-IzCYXuLSKDEjGFglbFWk0/iHmdhdcJzTmtS6lXxc0kaNFx2PFgrQf5jKnx5sarF2tiXh9Tgx3pSt3pdK7YwkMA==",
    +    "node_modules/@babel/plugin-transform-sticky-regex": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz",
    +      "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==",
    +      "peer": true,
           "dependencies": {
    -        "@babel/runtime": "^7.14.0",
    -        "@restart/context": "^2.1.4",
    -        "@restart/hooks": "^0.4.7",
    -        "@types/invariant": "^2.2.33",
    -        "@types/prop-types": "^15.7.3",
    -        "@types/react": ">=16.14.8",
    -        "@types/react-transition-group": "^4.4.1",
    -        "@types/warning": "^3.0.0",
    -        "classnames": "^2.3.1",
    -        "dom-helpers": "^5.2.1",
    -        "invariant": "^2.2.4",
    -        "prop-types": "^15.7.2",
    -        "prop-types-extra": "^1.1.0",
    -        "react-overlays": "^5.1.2",
    -        "react-transition-group": "^4.4.1",
    -        "uncontrollable": "^7.2.1",
    -        "warning": "^4.0.3"
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           },
           "peerDependencies": {
    -        "react": ">=16.8.0",
    -        "react-dom": ">=16.8.0"
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/react-clientside-effect": {
    -      "version": "1.2.6",
    -      "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz",
    -      "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==",
    +    "node_modules/@babel/plugin-transform-template-literals": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz",
    +      "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==",
    +      "peer": true,
           "dependencies": {
    -        "@babel/runtime": "^7.12.13"
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           },
           "peerDependencies": {
    -        "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/react-colorful": {
    -      "version": "5.6.1",
    -      "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz",
    -      "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==",
    +    "node_modules/@babel/plugin-transform-typeof-symbol": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz",
    +      "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
           "peerDependencies": {
    -        "react": ">=16.8.0",
    -        "react-dom": ">=16.8.0"
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/react-dom": {
    -      "version": "16.14.0",
    -      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz",
    -      "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==",
    +    "node_modules/@babel/plugin-transform-typescript": {
    +      "version": "7.22.9",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz",
    +      "integrity": "sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==",
    +      "peer": true,
           "dependencies": {
    -        "loose-envify": "^1.1.0",
    -        "object-assign": "^4.1.1",
    -        "prop-types": "^15.6.2",
    -        "scheduler": "^0.19.1"
    +        "@babel/helper-annotate-as-pure": "^7.22.5",
    +        "@babel/helper-create-class-features-plugin": "^7.22.9",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/plugin-syntax-typescript": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           },
           "peerDependencies": {
    -        "react": "^16.14.0"
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/react-dropzone": {
    -      "version": "14.2.3",
    -      "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz",
    -      "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==",
    +    "node_modules/@babel/plugin-transform-unicode-escapes": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz",
    +      "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==",
    +      "peer": true,
           "dependencies": {
    -        "attr-accept": "^2.2.2",
    -        "file-selector": "^0.6.0",
    -        "prop-types": "^15.8.1"
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": ">= 10.13"
    +        "node": ">=6.9.0"
           },
           "peerDependencies": {
    -        "react": ">= 16.8 || 18.0.0"
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/react-fast-compare": {
    -      "version": "3.2.2",
    -      "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
    -      "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
    -    },
    -    "node_modules/react-focus-lock": {
    -      "version": "2.9.4",
    -      "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.4.tgz",
    -      "integrity": "sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg==",
    +    "node_modules/@babel/plugin-transform-unicode-property-regex": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz",
    +      "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==",
    +      "peer": true,
           "dependencies": {
    -        "@babel/runtime": "^7.0.0",
    -        "focus-lock": "^0.11.6",
    -        "prop-types": "^15.6.2",
    -        "react-clientside-effect": "^1.2.6",
    -        "use-callback-ref": "^1.3.0",
    -        "use-sidecar": "^1.1.2"
    +        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
    -      "peerDependencies": {
    -        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
    -        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
    +      "engines": {
    +        "node": ">=6.9.0"
           },
    -      "peerDependenciesMeta": {
    -        "@types/react": {
    -          "optional": true
    -        }
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/react-focus-on": {
    -      "version": "3.8.1",
    -      "resolved": "https://registry.npmjs.org/react-focus-on/-/react-focus-on-3.8.1.tgz",
    -      "integrity": "sha512-fQcBx+SZMgXoRL+69r5+ic4bdVgqaCeKeoFPra8yhcSuL/3unWavfdirEFBGgH71K+RiocMTS6DETHcX0SlOZg==",
    +    "node_modules/@babel/plugin-transform-unicode-regex": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz",
    +      "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==",
    +      "peer": true,
           "dependencies": {
    -        "aria-hidden": "^1.2.2",
    -        "react-focus-lock": "^2.9.2",
    -        "react-remove-scroll": "^2.5.6",
    -        "react-style-singleton": "^2.2.0",
    -        "tslib": "^2.3.1",
    -        "use-callback-ref": "^1.3.0",
    -        "use-sidecar": "^1.1.2"
    +        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
           },
           "engines": {
    -        "node": ">=8.5.0"
    +        "node": ">=6.9.0"
           },
           "peerDependencies": {
    -        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
    -        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
    -      },
    -      "peerDependenciesMeta": {
    -        "@types/react": {
    -          "optional": true
    -        }
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/react-intl": {
    -      "version": "5.25.1",
    -      "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.25.1.tgz",
    -      "integrity": "sha512-pkjdQDvpJROoXLMltkP/5mZb0/XqrqLoPGKUCfbdkP8m6U9xbK40K51Wu+a4aQqTEvEK5lHBk0fWzUV72SJ3Hg==",
    +    "node_modules/@babel/plugin-transform-unicode-sets-regex": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz",
    +      "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==",
           "peer": true,
           "dependencies": {
    -        "@formatjs/ecma402-abstract": "1.11.4",
    -        "@formatjs/icu-messageformat-parser": "2.1.0",
    -        "@formatjs/intl": "2.2.1",
    -        "@formatjs/intl-displaynames": "5.4.3",
    -        "@formatjs/intl-listformat": "6.5.3",
    -        "@types/hoist-non-react-statics": "^3.3.1",
    -        "@types/react": "16 || 17 || 18",
    -        "hoist-non-react-statics": "^3.3.2",
    -        "intl-messageformat": "9.13.0",
    -        "tslib": "^2.1.0"
    +        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
           },
           "peerDependencies": {
    -        "react": "^16.3.0 || 17 || 18",
    -        "typescript": "^4.5"
    +        "@babel/core": "^7.0.0"
    +      }
    +    },
    +    "node_modules/@babel/preset-env": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz",
    +      "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/compat-data": "^7.22.5",
    +        "@babel/helper-compilation-targets": "^7.22.5",
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-validator-option": "^7.22.5",
    +        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5",
    +        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5",
    +        "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
    +        "@babel/plugin-syntax-async-generators": "^7.8.4",
    +        "@babel/plugin-syntax-class-properties": "^7.12.13",
    +        "@babel/plugin-syntax-class-static-block": "^7.14.5",
    +        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
    +        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
    +        "@babel/plugin-syntax-import-assertions": "^7.22.5",
    +        "@babel/plugin-syntax-import-attributes": "^7.22.5",
    +        "@babel/plugin-syntax-import-meta": "^7.10.4",
    +        "@babel/plugin-syntax-json-strings": "^7.8.3",
    +        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
    +        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
    +        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
    +        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
    +        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
    +        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
    +        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
    +        "@babel/plugin-syntax-top-level-await": "^7.14.5",
    +        "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
    +        "@babel/plugin-transform-arrow-functions": "^7.22.5",
    +        "@babel/plugin-transform-async-generator-functions": "^7.22.5",
    +        "@babel/plugin-transform-async-to-generator": "^7.22.5",
    +        "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
    +        "@babel/plugin-transform-block-scoping": "^7.22.5",
    +        "@babel/plugin-transform-class-properties": "^7.22.5",
    +        "@babel/plugin-transform-class-static-block": "^7.22.5",
    +        "@babel/plugin-transform-classes": "^7.22.5",
    +        "@babel/plugin-transform-computed-properties": "^7.22.5",
    +        "@babel/plugin-transform-destructuring": "^7.22.5",
    +        "@babel/plugin-transform-dotall-regex": "^7.22.5",
    +        "@babel/plugin-transform-duplicate-keys": "^7.22.5",
    +        "@babel/plugin-transform-dynamic-import": "^7.22.5",
    +        "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
    +        "@babel/plugin-transform-export-namespace-from": "^7.22.5",
    +        "@babel/plugin-transform-for-of": "^7.22.5",
    +        "@babel/plugin-transform-function-name": "^7.22.5",
    +        "@babel/plugin-transform-json-strings": "^7.22.5",
    +        "@babel/plugin-transform-literals": "^7.22.5",
    +        "@babel/plugin-transform-logical-assignment-operators": "^7.22.5",
    +        "@babel/plugin-transform-member-expression-literals": "^7.22.5",
    +        "@babel/plugin-transform-modules-amd": "^7.22.5",
    +        "@babel/plugin-transform-modules-commonjs": "^7.22.5",
    +        "@babel/plugin-transform-modules-systemjs": "^7.22.5",
    +        "@babel/plugin-transform-modules-umd": "^7.22.5",
    +        "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
    +        "@babel/plugin-transform-new-target": "^7.22.5",
    +        "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5",
    +        "@babel/plugin-transform-numeric-separator": "^7.22.5",
    +        "@babel/plugin-transform-object-rest-spread": "^7.22.5",
    +        "@babel/plugin-transform-object-super": "^7.22.5",
    +        "@babel/plugin-transform-optional-catch-binding": "^7.22.5",
    +        "@babel/plugin-transform-optional-chaining": "^7.22.5",
    +        "@babel/plugin-transform-parameters": "^7.22.5",
    +        "@babel/plugin-transform-private-methods": "^7.22.5",
    +        "@babel/plugin-transform-private-property-in-object": "^7.22.5",
    +        "@babel/plugin-transform-property-literals": "^7.22.5",
    +        "@babel/plugin-transform-regenerator": "^7.22.5",
    +        "@babel/plugin-transform-reserved-words": "^7.22.5",
    +        "@babel/plugin-transform-shorthand-properties": "^7.22.5",
    +        "@babel/plugin-transform-spread": "^7.22.5",
    +        "@babel/plugin-transform-sticky-regex": "^7.22.5",
    +        "@babel/plugin-transform-template-literals": "^7.22.5",
    +        "@babel/plugin-transform-typeof-symbol": "^7.22.5",
    +        "@babel/plugin-transform-unicode-escapes": "^7.22.5",
    +        "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
    +        "@babel/plugin-transform-unicode-regex": "^7.22.5",
    +        "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
    +        "@babel/preset-modules": "^0.1.5",
    +        "@babel/types": "^7.22.5",
    +        "babel-plugin-polyfill-corejs2": "^0.4.3",
    +        "babel-plugin-polyfill-corejs3": "^0.8.1",
    +        "babel-plugin-polyfill-regenerator": "^0.5.0",
    +        "core-js-compat": "^3.30.2",
    +        "semver": "^6.3.0"
           },
    -      "peerDependenciesMeta": {
    -        "typescript": {
    -          "optional": true
    -        }
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
           }
         },
    -    "node_modules/react-is": {
    -      "version": "16.13.1",
    -      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
    +    "node_modules/@babel/preset-modules": {
    +      "version": "0.1.6",
    +      "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz",
    +      "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.0.0",
    +        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
    +        "@babel/plugin-transform-dotall-regex": "^7.4.4",
    +        "@babel/types": "^7.4.4",
    +        "esutils": "^2.0.2"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
    +      }
    +    },
    +    "node_modules/@babel/preset-react": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.5.tgz",
    +      "integrity": "sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-validator-option": "^7.22.5",
    +        "@babel/plugin-transform-react-display-name": "^7.22.5",
    +        "@babel/plugin-transform-react-jsx": "^7.22.5",
    +        "@babel/plugin-transform-react-jsx-development": "^7.22.5",
    +        "@babel/plugin-transform-react-pure-annotations": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@babel/preset-typescript": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz",
    +      "integrity": "sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.22.5",
    +        "@babel/helper-validator-option": "^7.22.5",
    +        "@babel/plugin-syntax-jsx": "^7.22.5",
    +        "@babel/plugin-transform-modules-commonjs": "^7.22.5",
    +        "@babel/plugin-transform-typescript": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@babel/regjsgen": {
    +      "version": "0.8.0",
    +      "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
    +      "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
    +      "peer": true
    +    },
    +    "node_modules/@babel/runtime": {
    +      "version": "7.22.3",
    +      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz",
    +      "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==",
    +      "dependencies": {
    +        "regenerator-runtime": "^0.13.11"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      }
    +    },
    +    "node_modules/@babel/template": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz",
    +      "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/code-frame": "^7.22.5",
    +        "@babel/parser": "^7.22.5",
    +        "@babel/types": "^7.22.5"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      }
    +    },
    +    "node_modules/@babel/traverse": {
    +      "version": "7.22.8",
    +      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz",
    +      "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/code-frame": "^7.22.5",
    +        "@babel/generator": "^7.22.7",
    +        "@babel/helper-environment-visitor": "^7.22.5",
    +        "@babel/helper-function-name": "^7.22.5",
    +        "@babel/helper-hoist-variables": "^7.22.5",
    +        "@babel/helper-split-export-declaration": "^7.22.6",
    +        "@babel/parser": "^7.22.7",
    +        "@babel/types": "^7.22.5",
    +        "debug": "^4.1.0",
    +        "globals": "^11.1.0"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      }
    +    },
    +    "node_modules/@babel/types": {
    +      "version": "7.22.5",
    +      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz",
    +      "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-string-parser": "^7.22.5",
    +        "@babel/helper-validator-identifier": "^7.22.5",
    +        "to-fast-properties": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=6.9.0"
    +      }
    +    },
    +    "node_modules/@bcoe/v8-coverage": {
    +      "version": "0.2.3",
    +      "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
    +      "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
    +      "peer": true
    +    },
    +    "node_modules/@cospired/i18n-iso-languages": {
    +      "version": "4.1.0",
    +      "resolved": "https://registry.npmjs.org/@cospired/i18n-iso-languages/-/i18n-iso-languages-4.1.0.tgz",
    +      "integrity": "sha512-5+JK7YiO9r/FmwtlEPL1tQNt04/9AuN1t9GO/0C2yitqhKwFRa1r7VohNNUnFgB84MW5v4Lwq8ZAUZexuJh1nQ==",
    +      "engines": {
    +        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
    +      }
    +    },
    +    "node_modules/@csstools/cascade-layer-name-parser": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.3.tgz",
    +      "integrity": "sha512-ks9ysPP8012j90EQCCFtDsQIXOTCOpTQFIyyoRku06y8CXtUQ+8bXI8KVm9Q9ovwDUVthWuWKZWJD3u1rwnEfw==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/csstools"
    +        },
    +        {
    +          "type": "opencollective",
    +          "url": "https://opencollective.com/csstools"
    +        }
    +      ],
    +      "peer": true,
    +      "engines": {
    +        "node": "^14 || ^16 || >=18"
    +      },
    +      "peerDependencies": {
    +        "@csstools/css-parser-algorithms": "^2.3.0",
    +        "@csstools/css-tokenizer": "^2.1.1"
    +      }
    +    },
    +    "node_modules/@csstools/css-parser-algorithms": {
    +      "version": "2.3.0",
    +      "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.0.tgz",
    +      "integrity": "sha512-dTKSIHHWc0zPvcS5cqGP+/TPFUJB0ekJ9dGKvMAFoNuBFhDPBt9OMGNZiIA5vTiNdGHHBeScYPXIGBMnVOahsA==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/csstools"
    +        },
    +        {
    +          "type": "opencollective",
    +          "url": "https://opencollective.com/csstools"
    +        }
    +      ],
    +      "peer": true,
    +      "engines": {
    +        "node": "^14 || ^16 || >=18"
    +      },
    +      "peerDependencies": {
    +        "@csstools/css-tokenizer": "^2.1.1"
    +      }
    +    },
    +    "node_modules/@csstools/css-tokenizer": {
    +      "version": "2.1.1",
    +      "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz",
    +      "integrity": "sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^14 || ^16 || >=18"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/csstools"
    +      }
    +    },
    +    "node_modules/@csstools/media-query-list-parser": {
    +      "version": "2.1.2",
    +      "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.2.tgz",
    +      "integrity": "sha512-M8cFGGwl866o6++vIY7j1AKuq9v57cf+dGepScwCcbut9ypJNr4Cj+LLTWligYUZ0uyhEoJDKt5lvyBfh2L3ZQ==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/csstools"
    +        },
    +        {
    +          "type": "opencollective",
    +          "url": "https://opencollective.com/csstools"
    +        }
    +      ],
    +      "peer": true,
    +      "engines": {
    +        "node": "^14 || ^16 || >=18"
    +      },
    +      "peerDependencies": {
    +        "@csstools/css-parser-algorithms": "^2.3.0",
    +        "@csstools/css-tokenizer": "^2.1.1"
    +      }
    +    },
    +    "node_modules/@discoveryjs/json-ext": {
    +      "version": "0.5.7",
    +      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
    +      "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10.0.0"
    +      }
    +    },
    +    "node_modules/@edx/brand": {
    +      "name": "@edx/brand-openedx",
    +      "version": "1.2.0",
    +      "resolved": "https://registry.npmjs.org/@edx/brand-openedx/-/brand-openedx-1.2.0.tgz",
    +      "integrity": "sha512-r4PDN3rCgDsLovW44ayxoNNHgG5I4Rvss6MG5CrQEX4oW8YhQVEod+jJtwR5vi0mFLN2GIaMlDpd7iIy03VqXg=="
    +    },
    +    "node_modules/@edx/browserslist-config": {
    +      "version": "1.2.0",
    +      "resolved": "https://registry.npmjs.org/@edx/browserslist-config/-/browserslist-config-1.2.0.tgz",
    +      "integrity": "sha512-T1+6P52Yx7SMkmoIr4O0Q3m/DyRdrLTJbv1xVijdRLFEq1hqdafEs+Ln1423U5LSkTePb9AOkEtL1G0RZLFl1w==",
    +      "dev": true
    +    },
    +    "node_modules/@edx/eslint-config": {
    +      "version": "3.2.0",
    +      "resolved": "https://registry.npmjs.org/@edx/eslint-config/-/eslint-config-3.2.0.tgz",
    +      "integrity": "sha512-X2o34xr3KqmQSV/vJVv6k4FxUKYwbBATHTtTHLTYQvM9PVoM3WbKQP9tl6Z057pRErKzshJcks+4ENzDyhr11Q==",
    +      "peer": true,
    +      "peerDependencies": {
    +        "eslint": "^6.8.0 || ^7.0.0 || ^8.0.0",
    +        "eslint-config-airbnb": "^18.0.1 || ^19.0.0",
    +        "eslint-plugin-import": "^2.20.0",
    +        "eslint-plugin-jsx-a11y": "^6.2.3",
    +        "eslint-plugin-react": "^7.18.0",
    +        "eslint-plugin-react-hooks": "^1.7.0 || ^4.0.0"
    +      }
    +    },
    +    "node_modules/@edx/frontend-build": {
    +      "version": "12.9.2",
    +      "resolved": "https://registry.npmjs.org/@edx/frontend-build/-/frontend-build-12.9.2.tgz",
    +      "integrity": "sha512-144hlDhpVQ7Hhxl4wBkQOHgrTbx/ZKEdUBeYSphK2ocvUv73ItM8Coyh/H6g2sd1Q34FmOT0H6CW8HxX+aTAJQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/cli": "7.22.5",
    +        "@babel/core": "7.22.5",
    +        "@babel/eslint-parser": "7.22.9",
    +        "@babel/plugin-proposal-class-properties": "7.18.6",
    +        "@babel/plugin-proposal-object-rest-spread": "7.20.7",
    +        "@babel/plugin-syntax-dynamic-import": "7.8.3",
    +        "@babel/preset-env": "7.22.5",
    +        "@babel/preset-react": "7.22.5",
    +        "@edx/eslint-config": "3.2.0",
    +        "@edx/new-relic-source-map-webpack-plugin": "2.1.0",
    +        "@fullhuman/postcss-purgecss": "5.0.0",
    +        "@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
    +        "@svgr/webpack": "8.0.1",
    +        "autoprefixer": "10.4.14",
    +        "babel-jest": "27.5.1",
    +        "babel-loader": "9.1.3",
    +        "babel-plugin-react-intl": "7.9.4",
    +        "babel-plugin-transform-imports": "2.0.0",
    +        "babel-polyfill": "6.26.0",
    +        "chalk": "4.1.2",
    +        "clean-webpack-plugin": "4.0.0",
    +        "css-loader": "5.2.7",
    +        "cssnano": "6.0.1",
    +        "dotenv": "8.6.0",
    +        "dotenv-webpack": "8.0.1",
    +        "eslint": "8.44.0",
    +        "eslint-config-airbnb": "19.0.4",
    +        "eslint-plugin-import": "2.27.5",
    +        "eslint-plugin-jsx-a11y": "6.7.1",
    +        "eslint-plugin-react": "7.32.2",
    +        "eslint-plugin-react-hooks": "4.6.0",
    +        "express": "4.18.2",
    +        "file-loader": "6.2.0",
    +        "html-webpack-plugin": "5.5.3",
    +        "identity-obj-proxy": "3.0.0",
    +        "image-minimizer-webpack-plugin": "3.8.3",
    +        "jest": "27.5.1",
    +        "mini-css-extract-plugin": "1.6.2",
    +        "postcss": "8.4.26",
    +        "postcss-custom-media": "9.1.5",
    +        "postcss-loader": "7.3.3",
    +        "postcss-rtlcss": "4.0.6",
    +        "react-dev-utils": "12.0.1",
    +        "react-refresh": "0.14.0",
    +        "resolve-url-loader": "5.0.0",
    +        "sass": "1.63.6",
    +        "sass-loader": "13.3.2",
    +        "sharp": "0.32.3",
    +        "source-map-loader": "4.0.1",
    +        "style-loader": "3.3.3",
    +        "url-loader": "4.1.1",
    +        "webpack": "5.88.2",
    +        "webpack-bundle-analyzer": "4.9.0",
    +        "webpack-cli": "5.1.4",
    +        "webpack-dev-server": "4.15.1",
    +        "webpack-merge": "5.9.0"
    +      },
    +      "bin": {
    +        "fedx-scripts": "bin/fedx-scripts.js"
    +      },
    +      "peerDependencies": {
    +        "react": "^16.9.0 || ^17.0.0"
    +      }
    +    },
    +    "node_modules/@edx/frontend-platform": {
    +      "version": "4.6.0",
    +      "resolved": "https://registry.npmjs.org/@edx/frontend-platform/-/frontend-platform-4.6.0.tgz",
    +      "integrity": "sha512-NZ1I3BgUZl7bqvDwSnnL+LxqZOdOUGZU55KiwvknqiKU8RS5Lx9tc4arp+NcX1u58xy/Xbinv+mriSO6PPxQNQ==",
    +      "dependencies": {
    +        "@cospired/i18n-iso-languages": "4.1.0",
    +        "@formatjs/intl-pluralrules": "4.3.3",
    +        "@formatjs/intl-relativetimeformat": "10.0.1",
    +        "axios": "0.27.2",
    +        "axios-cache-interceptor": "0.10.7",
    +        "form-urlencoded": "4.1.4",
    +        "glob": "7.2.3",
    +        "history": "4.10.1",
    +        "i18n-iso-countries": "4.3.1",
    +        "jwt-decode": "3.1.2",
    +        "localforage": "1.10.0",
    +        "localforage-memoryStorageDriver": "0.9.2",
    +        "lodash.camelcase": "4.3.0",
    +        "lodash.memoize": "4.1.2",
    +        "lodash.merge": "4.6.2",
    +        "lodash.snakecase": "4.1.1",
    +        "pubsub-js": "1.9.4",
    +        "react-intl": "^5.25.0",
    +        "universal-cookie": "4.0.4"
    +      },
    +      "bin": {
    +        "intl-imports.js": "i18n/scripts/intl-imports.js",
    +        "transifex-utils.js": "i18n/scripts/transifex-utils.js"
    +      },
    +      "peerDependencies": {
    +        "@edx/frontend-build": ">= 8.1.0",
    +        "@edx/paragon": ">= 10.0.0 < 21.0.0",
    +        "prop-types": "^15.7.2",
    +        "react": "^16.9.0 || ^17.0.0",
    +        "react-dom": "^16.9.0 || ^17.0.0",
    +        "react-redux": "^7.1.1",
    +        "react-router-dom": "^5.0.1",
    +        "redux": "^4.0.4"
    +      }
    +    },
    +    "node_modules/@edx/frontend-platform/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/@edx/frontend-platform/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/@edx/frontend-platform/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/@edx/new-relic-source-map-webpack-plugin": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/@edx/new-relic-source-map-webpack-plugin/-/new-relic-source-map-webpack-plugin-2.1.0.tgz",
    +      "integrity": "sha512-OrlvtdsPcWuOm6NBWfUxFE06qdPiu2bf9nU4I9t8Lu7WW6NsosAB5hxm5U+MBMZP2AuVl3FAt0k0lZsu3+ri8Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "@newrelic/publish-sourcemap": "^5.0.1"
    +      }
    +    },
    +    "node_modules/@edx/paragon": {
    +      "version": "20.45.5",
    +      "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.45.5.tgz",
    +      "integrity": "sha512-7GsGPKyxtjFo3Xnj+uQ4vx/Khz7S6srHe8MqcsYCMx2mJ8fulPN2JFm84m+0o1CSwHaL469wBPONI4KCa+vfrA==",
    +      "dependencies": {
    +        "@fortawesome/fontawesome-svg-core": "^6.1.1",
    +        "@fortawesome/react-fontawesome": "^0.1.18",
    +        "@popperjs/core": "^2.11.4",
    +        "bootstrap": "^4.6.2",
    +        "classnames": "^2.3.1",
    +        "email-prop-type": "^3.0.0",
    +        "file-selector": "^0.6.0",
    +        "font-awesome": "^4.7.0",
    +        "glob": "^8.0.3",
    +        "lodash.uniqby": "^4.7.0",
    +        "mailto-link": "^2.0.0",
    +        "prop-types": "^15.8.1",
    +        "react-bootstrap": "^1.6.5",
    +        "react-colorful": "^5.6.1",
    +        "react-dropzone": "^14.2.1",
    +        "react-focus-on": "^3.5.4",
    +        "react-loading-skeleton": "^3.1.0",
    +        "react-popper": "^2.2.5",
    +        "react-proptype-conditional-require": "^1.0.4",
    +        "react-responsive": "^8.2.0",
    +        "react-table": "^7.7.0",
    +        "react-transition-group": "^4.4.2",
    +        "tabbable": "^5.3.3",
    +        "uncontrollable": "^7.2.1",
    +        "uuid": "^9.0.0"
    +      },
    +      "peerDependencies": {
    +        "react": "^16.8.6 || ^17.0.0",
    +        "react-dom": "^16.8.6 || ^17.0.0",
    +        "react-intl": "^5.25.1"
    +      }
    +    },
    +    "node_modules/@eslint-community/eslint-utils": {
    +      "version": "4.4.0",
    +      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
    +      "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
    +      "peer": true,
    +      "dependencies": {
    +        "eslint-visitor-keys": "^3.3.0"
    +      },
    +      "engines": {
    +        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
    +      },
    +      "peerDependencies": {
    +        "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
    +      }
    +    },
    +    "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
    +      "version": "3.4.1",
    +      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
    +      "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
    +      },
    +      "funding": {
    +        "url": "https://opencollective.com/eslint"
    +      }
    +    },
    +    "node_modules/@eslint-community/regexpp": {
    +      "version": "4.6.0",
    +      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.0.tgz",
    +      "integrity": "sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
    +      }
    +    },
    +    "node_modules/@eslint/eslintrc": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz",
    +      "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==",
    +      "peer": true,
    +      "dependencies": {
    +        "ajv": "^6.12.4",
    +        "debug": "^4.3.2",
    +        "espree": "^9.6.0",
    +        "globals": "^13.19.0",
    +        "ignore": "^5.2.0",
    +        "import-fresh": "^3.2.1",
    +        "js-yaml": "^4.1.0",
    +        "minimatch": "^3.1.2",
    +        "strip-json-comments": "^3.1.1"
    +      },
    +      "engines": {
    +        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
    +      },
    +      "funding": {
    +        "url": "https://opencollective.com/eslint"
    +      }
    +    },
    +    "node_modules/@eslint/eslintrc/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==",
    +      "peer": true
    +    },
    +    "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/@eslint/eslintrc/node_modules/globals": {
    +      "version": "13.20.0",
    +      "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
    +      "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "type-fest": "^0.20.2"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/@eslint/eslintrc/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==",
    +      "peer": true,
    +      "dependencies": {
    +        "argparse": "^2.0.1"
    +      },
    +      "bin": {
    +        "js-yaml": "bin/js-yaml.js"
    +      }
    +    },
    +    "node_modules/@eslint/eslintrc/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/@eslint/eslintrc/node_modules/type-fest": {
    +      "version": "0.20.2",
    +      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
    +      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/@eslint/js": {
    +      "version": "8.44.0",
    +      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz",
    +      "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
    +      }
    +    },
    +    "node_modules/@formatjs/ecma402-abstract": {
    +      "version": "1.11.4",
    +      "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz",
    +      "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==",
    +      "dependencies": {
    +        "@formatjs/intl-localematcher": "0.2.25",
    +        "tslib": "^2.1.0"
    +      }
    +    },
    +    "node_modules/@formatjs/fast-memoize": {
    +      "version": "1.2.1",
    +      "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz",
    +      "integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==",
    +      "dependencies": {
    +        "tslib": "^2.1.0"
    +      }
    +    },
    +    "node_modules/@formatjs/icu-messageformat-parser": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz",
    +      "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==",
    +      "dependencies": {
    +        "@formatjs/ecma402-abstract": "1.11.4",
    +        "@formatjs/icu-skeleton-parser": "1.3.6",
    +        "tslib": "^2.1.0"
    +      }
    +    },
    +    "node_modules/@formatjs/icu-skeleton-parser": {
    +      "version": "1.3.6",
    +      "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz",
    +      "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==",
    +      "dependencies": {
    +        "@formatjs/ecma402-abstract": "1.11.4",
    +        "tslib": "^2.1.0"
    +      }
    +    },
    +    "node_modules/@formatjs/intl": {
    +      "version": "2.2.1",
    +      "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.2.1.tgz",
    +      "integrity": "sha512-vgvyUOOrzqVaOFYzTf2d3+ToSkH2JpR7x/4U1RyoHQLmvEaTQvXJ7A2qm1Iy3brGNXC/+/7bUlc3lpH+h/LOJA==",
    +      "dependencies": {
    +        "@formatjs/ecma402-abstract": "1.11.4",
    +        "@formatjs/fast-memoize": "1.2.1",
    +        "@formatjs/icu-messageformat-parser": "2.1.0",
    +        "@formatjs/intl-displaynames": "5.4.3",
    +        "@formatjs/intl-listformat": "6.5.3",
    +        "intl-messageformat": "9.13.0",
    +        "tslib": "^2.1.0"
    +      },
    +      "peerDependencies": {
    +        "typescript": "^4.5"
    +      },
    +      "peerDependenciesMeta": {
    +        "typescript": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/@formatjs/intl-displaynames": {
    +      "version": "5.4.3",
    +      "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-5.4.3.tgz",
    +      "integrity": "sha512-4r12A3mS5dp5hnSaQCWBuBNfi9Amgx2dzhU4lTFfhSxgb5DOAiAbMpg6+7gpWZgl4ahsj3l2r/iHIjdmdXOE2Q==",
    +      "dependencies": {
    +        "@formatjs/ecma402-abstract": "1.11.4",
    +        "@formatjs/intl-localematcher": "0.2.25",
    +        "tslib": "^2.1.0"
    +      }
    +    },
    +    "node_modules/@formatjs/intl-listformat": {
    +      "version": "6.5.3",
    +      "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-6.5.3.tgz",
    +      "integrity": "sha512-ozpz515F/+3CU+HnLi5DYPsLa6JoCfBggBSSg/8nOB5LYSFW9+ZgNQJxJ8tdhKYeODT+4qVHX27EeJLoxLGLNg==",
    +      "dependencies": {
    +        "@formatjs/ecma402-abstract": "1.11.4",
    +        "@formatjs/intl-localematcher": "0.2.25",
    +        "tslib": "^2.1.0"
    +      }
    +    },
    +    "node_modules/@formatjs/intl-localematcher": {
    +      "version": "0.2.25",
    +      "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz",
    +      "integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==",
    +      "dependencies": {
    +        "tslib": "^2.1.0"
    +      }
    +    },
    +    "node_modules/@formatjs/intl-numberformat": {
    +      "version": "5.7.6",
    +      "resolved": "https://registry.npmjs.org/@formatjs/intl-numberformat/-/intl-numberformat-5.7.6.tgz",
    +      "integrity": "sha512-ZlZfYtvbVHYZY5OG3RXizoCwxKxEKOrzEe2YOw9wbzoxF3PmFn0SAgojCFGLyNXkkR6xVxlylhbuOPf1dkIVNg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@formatjs/ecma402-abstract": "1.4.0",
    +        "tslib": "^2.0.1"
    +      }
    +    },
    +    "node_modules/@formatjs/intl-numberformat/node_modules/@formatjs/ecma402-abstract": {
    +      "version": "1.4.0",
    +      "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.4.0.tgz",
    +      "integrity": "sha512-Mv027hcLFjE45K8UJ8PjRpdDGfR0aManEFj1KzoN8zXNveHGEygpZGfFf/FTTMl+QEVSrPAUlyxaCApvmv47AQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "tslib": "^2.0.1"
    +      }
    +    },
    +    "node_modules/@formatjs/intl-pluralrules": {
    +      "version": "4.3.3",
    +      "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-4.3.3.tgz",
    +      "integrity": "sha512-NLZN8gf2qLpCuc0m565IbKLNUarEGOzk0mkdTkE4XTuNCofzoQTurW6lL3fmDlneAoYl2FiTdHa5q4o2vZF50g==",
    +      "dependencies": {
    +        "@formatjs/ecma402-abstract": "1.11.4",
    +        "@formatjs/intl-localematcher": "0.2.25",
    +        "tslib": "^2.1.0"
    +      }
    +    },
    +    "node_modules/@formatjs/intl-relativetimeformat": {
    +      "version": "10.0.1",
    +      "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-10.0.1.tgz",
    +      "integrity": "sha512-AABPQtPjFilXegQsnmVHrSlzjFNUffAEk5DgowY6b7WSwDI7g2W6QgW903/lbZ58emhphAbgHdtKeUBXqTiLpw==",
    +      "dependencies": {
    +        "@formatjs/ecma402-abstract": "1.11.4",
    +        "@formatjs/intl-localematcher": "0.2.25",
    +        "tslib": "^2.1.0"
    +      }
    +    },
    +    "node_modules/@fortawesome/fontawesome-common-types": {
    +      "version": "6.4.0",
    +      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.0.tgz",
    +      "integrity": "sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==",
    +      "hasInstallScript": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/@fortawesome/fontawesome-svg-core": {
    +      "version": "6.4.0",
    +      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.0.tgz",
    +      "integrity": "sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==",
    +      "hasInstallScript": true,
    +      "dependencies": {
    +        "@fortawesome/fontawesome-common-types": "6.4.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/@fortawesome/react-fontawesome": {
    +      "version": "0.1.19",
    +      "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.19.tgz",
    +      "integrity": "sha512-Hyb+lB8T18cvLNX0S3llz7PcSOAJMLwiVKBuuzwM/nI5uoBw+gQjnf9il0fR1C3DKOI5Kc79pkJ4/xB0Uw9aFQ==",
    +      "dependencies": {
    +        "prop-types": "^15.8.1"
    +      },
    +      "peerDependencies": {
    +        "@fortawesome/fontawesome-svg-core": "~1 || ~6",
    +        "react": ">=16.x"
    +      }
    +    },
    +    "node_modules/@fullhuman/postcss-purgecss": {
    +      "version": "5.0.0",
    +      "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-5.0.0.tgz",
    +      "integrity": "sha512-onDS/b/2pMRzqSoj4qOs2tYFmOpaspjTAgvACIHMPiicu1ptajiBruTrjBzTKdxWdX0ldaBb7wj8nEaTLyFkJw==",
    +      "peer": true,
    +      "dependencies": {
    +        "purgecss": "^5.0.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.0.0"
    +      }
    +    },
    +    "node_modules/@humanwhocodes/config-array": {
    +      "version": "0.11.10",
    +      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
    +      "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@humanwhocodes/object-schema": "^1.2.1",
    +        "debug": "^4.1.1",
    +        "minimatch": "^3.0.5"
    +      },
    +      "engines": {
    +        "node": ">=10.10.0"
    +      }
    +    },
    +    "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/@humanwhocodes/module-importer": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
    +      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=12.22"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/nzakas"
    +      }
    +    },
    +    "node_modules/@humanwhocodes/object-schema": {
    +      "version": "1.2.1",
    +      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
    +      "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
    +      "peer": true
    +    },
    +    "node_modules/@istanbuljs/load-nyc-config": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
    +      "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "camelcase": "^5.3.1",
    +        "find-up": "^4.1.0",
    +        "get-package-type": "^0.1.0",
    +        "js-yaml": "^3.13.1",
    +        "resolve-from": "^5.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": {
    +      "version": "5.3.1",
    +      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
    +      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": {
    +      "version": "4.1.0",
    +      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
    +      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
    +      "peer": true,
    +      "dependencies": {
    +        "locate-path": "^5.0.0",
    +        "path-exists": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": {
    +      "version": "5.0.0",
    +      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
    +      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-locate": "^4.1.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
    +      "version": "2.3.0",
    +      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
    +      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-try": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": {
    +      "version": "4.1.0",
    +      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
    +      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-limit": "^2.2.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/@istanbuljs/schema": {
    +      "version": "0.1.3",
    +      "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
    +      "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/@jest/console": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz",
    +      "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*",
    +        "chalk": "^4.0.0",
    +        "jest-message-util": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "slash": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/@jest/console/node_modules/slash": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
    +      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/@jest/core": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz",
    +      "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/console": "^27.5.1",
    +        "@jest/reporters": "^27.5.1",
    +        "@jest/test-result": "^27.5.1",
    +        "@jest/transform": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*",
    +        "ansi-escapes": "^4.2.1",
    +        "chalk": "^4.0.0",
    +        "emittery": "^0.8.1",
    +        "exit": "^0.1.2",
    +        "graceful-fs": "^4.2.9",
    +        "jest-changed-files": "^27.5.1",
    +        "jest-config": "^27.5.1",
    +        "jest-haste-map": "^27.5.1",
    +        "jest-message-util": "^27.5.1",
    +        "jest-regex-util": "^27.5.1",
    +        "jest-resolve": "^27.5.1",
    +        "jest-resolve-dependencies": "^27.5.1",
    +        "jest-runner": "^27.5.1",
    +        "jest-runtime": "^27.5.1",
    +        "jest-snapshot": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "jest-validate": "^27.5.1",
    +        "jest-watcher": "^27.5.1",
    +        "micromatch": "^4.0.4",
    +        "rimraf": "^3.0.0",
    +        "slash": "^3.0.0",
    +        "strip-ansi": "^6.0.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      },
    +      "peerDependencies": {
    +        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "node-notifier": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/@jest/core/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/@jest/core/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/@jest/core/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/@jest/core/node_modules/rimraf": {
    +      "version": "3.0.2",
    +      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
    +      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
    +      "peer": true,
    +      "dependencies": {
    +        "glob": "^7.1.3"
    +      },
    +      "bin": {
    +        "rimraf": "bin.js"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/@jest/core/node_modules/slash": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
    +      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/@jest/environment": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
    +      "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/fake-timers": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*",
    +        "jest-mock": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/@jest/fake-timers": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
    +      "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/types": "^27.5.1",
    +        "@sinonjs/fake-timers": "^8.0.1",
    +        "@types/node": "*",
    +        "jest-message-util": "^27.5.1",
    +        "jest-mock": "^27.5.1",
    +        "jest-util": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/@jest/globals": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz",
    +      "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/environment": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "expect": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/@jest/reporters": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz",
    +      "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@bcoe/v8-coverage": "^0.2.3",
    +        "@jest/console": "^27.5.1",
    +        "@jest/test-result": "^27.5.1",
    +        "@jest/transform": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*",
    +        "chalk": "^4.0.0",
    +        "collect-v8-coverage": "^1.0.0",
    +        "exit": "^0.1.2",
    +        "glob": "^7.1.2",
    +        "graceful-fs": "^4.2.9",
    +        "istanbul-lib-coverage": "^3.0.0",
    +        "istanbul-lib-instrument": "^5.1.0",
    +        "istanbul-lib-report": "^3.0.0",
    +        "istanbul-lib-source-maps": "^4.0.0",
    +        "istanbul-reports": "^3.1.3",
    +        "jest-haste-map": "^27.5.1",
    +        "jest-resolve": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "jest-worker": "^27.5.1",
    +        "slash": "^3.0.0",
    +        "source-map": "^0.6.0",
    +        "string-length": "^4.0.1",
    +        "terminal-link": "^2.0.0",
    +        "v8-to-istanbul": "^8.1.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      },
    +      "peerDependencies": {
    +        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "node-notifier": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/@jest/reporters/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/@jest/reporters/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/@jest/reporters/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/@jest/reporters/node_modules/slash": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
    +      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/@jest/reporters/node_modules/source-map": {
    +      "version": "0.6.1",
    +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    +      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/@jest/source-map": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz",
    +      "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
    +      "peer": true,
    +      "dependencies": {
    +        "callsites": "^3.0.0",
    +        "graceful-fs": "^4.2.9",
    +        "source-map": "^0.6.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/@jest/source-map/node_modules/source-map": {
    +      "version": "0.6.1",
    +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    +      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/@jest/test-result": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz",
    +      "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/console": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/istanbul-lib-coverage": "^2.0.0",
    +        "collect-v8-coverage": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/@jest/test-sequencer": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
    +      "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/test-result": "^27.5.1",
    +        "graceful-fs": "^4.2.9",
    +        "jest-haste-map": "^27.5.1",
    +        "jest-runtime": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/@jest/transform": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz",
    +      "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/core": "^7.1.0",
    +        "@jest/types": "^27.5.1",
    +        "babel-plugin-istanbul": "^6.1.1",
    +        "chalk": "^4.0.0",
    +        "convert-source-map": "^1.4.0",
    +        "fast-json-stable-stringify": "^2.0.0",
    +        "graceful-fs": "^4.2.9",
    +        "jest-haste-map": "^27.5.1",
    +        "jest-regex-util": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "micromatch": "^4.0.4",
    +        "pirates": "^4.0.4",
    +        "slash": "^3.0.0",
    +        "source-map": "^0.6.1",
    +        "write-file-atomic": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/@jest/transform/node_modules/slash": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
    +      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/@jest/transform/node_modules/source-map": {
    +      "version": "0.6.1",
    +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    +      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/@jest/types": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
    +      "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/istanbul-lib-coverage": "^2.0.0",
    +        "@types/istanbul-reports": "^3.0.0",
    +        "@types/node": "*",
    +        "@types/yargs": "^16.0.0",
    +        "chalk": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/@jridgewell/gen-mapping": {
    +      "version": "0.3.3",
    +      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
    +      "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jridgewell/set-array": "^1.0.1",
    +        "@jridgewell/sourcemap-codec": "^1.4.10",
    +        "@jridgewell/trace-mapping": "^0.3.9"
    +      },
    +      "engines": {
    +        "node": ">=6.0.0"
    +      }
    +    },
    +    "node_modules/@jridgewell/resolve-uri": {
    +      "version": "3.1.0",
    +      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
    +      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6.0.0"
    +      }
    +    },
    +    "node_modules/@jridgewell/set-array": {
    +      "version": "1.1.2",
    +      "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
    +      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6.0.0"
    +      }
    +    },
    +    "node_modules/@jridgewell/source-map": {
    +      "version": "0.3.5",
    +      "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
    +      "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jridgewell/gen-mapping": "^0.3.0",
    +        "@jridgewell/trace-mapping": "^0.3.9"
    +      }
    +    },
    +    "node_modules/@jridgewell/sourcemap-codec": {
    +      "version": "1.4.15",
    +      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
    +      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
    +      "peer": true
    +    },
    +    "node_modules/@jridgewell/trace-mapping": {
    +      "version": "0.3.18",
    +      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
    +      "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jridgewell/resolve-uri": "3.1.0",
    +        "@jridgewell/sourcemap-codec": "1.4.14"
    +      }
    +    },
    +    "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
    +      "version": "1.4.14",
    +      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
    +      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
    +      "peer": true
    +    },
    +    "node_modules/@leichtgewicht/ip-codec": {
    +      "version": "2.0.4",
    +      "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
    +      "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==",
    +      "peer": true
    +    },
    +    "node_modules/@newrelic/publish-sourcemap": {
    +      "version": "5.1.0",
    +      "resolved": "https://registry.npmjs.org/@newrelic/publish-sourcemap/-/publish-sourcemap-5.1.0.tgz",
    +      "integrity": "sha512-pOpW0InKZp/DXUmD3h6vaCGdtMDY5LyzzKvq3S3MBwTKm5Qc5ka3yZC73sLAMOXnjKZmdyG3d8A5LC+LawOEpA==",
    +      "peer": true,
    +      "dependencies": {
    +        "superagent": "^3.4.1",
    +        "yargs": "^16.0.3"
    +      },
    +      "bin": {
    +        "delete-sourcemap": "scripts/delete-cli.js",
    +        "list-sourcemaps": "scripts/list-cli.js",
    +        "publish-sourcemap": "scripts/publish-cli.js"
    +      }
    +    },
    +    "node_modules/@nicolo-ribaudo/chokidar-2": {
    +      "version": "2.1.8-no-fsevents.3",
    +      "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz",
    +      "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==",
    +      "optional": true,
    +      "peer": true
    +    },
    +    "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
    +      "version": "5.1.1-v1",
    +      "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
    +      "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
    +      "peer": true,
    +      "dependencies": {
    +        "eslint-scope": "5.1.1"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "@nodelib/fs.scandir": "2.1.5",
    +        "fastq": "^1.6.0"
    +      },
    +      "engines": {
    +        "node": ">= 8"
    +      }
    +    },
    +    "node_modules/@pmmmwh/react-refresh-webpack-plugin": {
    +      "version": "0.5.10",
    +      "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz",
    +      "integrity": "sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==",
    +      "peer": true,
    +      "dependencies": {
    +        "ansi-html-community": "^0.0.8",
    +        "common-path-prefix": "^3.0.0",
    +        "core-js-pure": "^3.23.3",
    +        "error-stack-parser": "^2.0.6",
    +        "find-up": "^5.0.0",
    +        "html-entities": "^2.1.0",
    +        "loader-utils": "^2.0.4",
    +        "schema-utils": "^3.0.0",
    +        "source-map": "^0.7.3"
    +      },
    +      "engines": {
    +        "node": ">= 10.13"
    +      },
    +      "peerDependencies": {
    +        "@types/webpack": "4.x || 5.x",
    +        "react-refresh": ">=0.10.0 <1.0.0",
    +        "sockjs-client": "^1.4.0",
    +        "type-fest": ">=0.17.0 <4.0.0",
    +        "webpack": ">=4.43.0 <6.0.0",
    +        "webpack-dev-server": "3.x || 4.x",
    +        "webpack-hot-middleware": "2.x",
    +        "webpack-plugin-serve": "0.x || 1.x"
    +      },
    +      "peerDependenciesMeta": {
    +        "@types/webpack": {
    +          "optional": true
    +        },
    +        "sockjs-client": {
    +          "optional": true
    +        },
    +        "type-fest": {
    +          "optional": true
    +        },
    +        "webpack-dev-server": {
    +          "optional": true
    +        },
    +        "webpack-hot-middleware": {
    +          "optional": true
    +        },
    +        "webpack-plugin-serve": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/@polka/url": {
    +      "version": "1.0.0-next.21",
    +      "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
    +      "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
    +      "peer": true
    +    },
    +    "node_modules/@popperjs/core": {
    +      "version": "2.11.8",
    +      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
    +      "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/popperjs"
    +      }
    +    },
    +    "node_modules/@restart/context": {
    +      "version": "2.1.4",
    +      "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz",
    +      "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==",
    +      "peerDependencies": {
    +        "react": ">=16.3.2"
    +      }
    +    },
    +    "node_modules/@restart/hooks": {
    +      "version": "0.4.9",
    +      "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.9.tgz",
    +      "integrity": "sha512-3BekqcwB6Umeya+16XPooARn4qEPW6vNvwYnlofIYe6h9qG1/VeD7UvShCWx11eFz5ELYmwIEshz+MkPX3wjcQ==",
    +      "dependencies": {
    +        "dequal": "^2.0.2"
    +      },
    +      "peerDependencies": {
    +        "react": ">=16.8.0"
    +      }
    +    },
    +    "node_modules/@sinonjs/commons": {
    +      "version": "1.8.6",
    +      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
    +      "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "type-detect": "4.0.8"
    +      }
    +    },
    +    "node_modules/@sinonjs/fake-timers": {
    +      "version": "8.1.0",
    +      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
    +      "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@sinonjs/commons": "^1.7.0"
    +      }
    +    },
    +    "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
    +      "version": "8.0.0",
    +      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz",
    +      "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@svgr/babel-plugin-remove-jsx-attribute": {
    +      "version": "8.0.0",
    +      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz",
    +      "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": {
    +      "version": "8.0.0",
    +      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz",
    +      "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
    +      "version": "8.0.0",
    +      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz",
    +      "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@svgr/babel-plugin-svg-dynamic-title": {
    +      "version": "8.0.0",
    +      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz",
    +      "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@svgr/babel-plugin-svg-em-dimensions": {
    +      "version": "8.0.0",
    +      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz",
    +      "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@svgr/babel-plugin-transform-react-native-svg": {
    +      "version": "8.0.0",
    +      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.0.0.tgz",
    +      "integrity": "sha512-UKrY3860AQICgH7g+6h2zkoxeVEPLYwX/uAjmqo4PIq2FIHppwhIqZstIyTz0ZtlwreKR41O3W3BzsBBiJV2Aw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@svgr/babel-plugin-transform-svg-component": {
    +      "version": "8.0.0",
    +      "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz",
    +      "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=12"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@svgr/babel-preset": {
    +      "version": "8.0.0",
    +      "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.0.0.tgz",
    +      "integrity": "sha512-KLcjiZychInVrhs86OvcYPLTFu9L5XV2vj0XAaE1HwE3J3jLmIzRY8ttdeAg/iFyp8nhavJpafpDZTt+1LIpkQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@svgr/babel-plugin-add-jsx-attribute": "8.0.0",
    +        "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0",
    +        "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0",
    +        "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0",
    +        "@svgr/babel-plugin-svg-dynamic-title": "8.0.0",
    +        "@svgr/babel-plugin-svg-em-dimensions": "8.0.0",
    +        "@svgr/babel-plugin-transform-react-native-svg": "8.0.0",
    +        "@svgr/babel-plugin-transform-svg-component": "8.0.0"
    +      },
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0-0"
    +      }
    +    },
    +    "node_modules/@svgr/core": {
    +      "version": "8.0.0",
    +      "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.0.0.tgz",
    +      "integrity": "sha512-aJKtc+Pie/rFYsVH/unSkDaZGvEeylNv/s2cP+ta9/rYWxRVvoV/S4Qw65Kmrtah4CBK5PM6ISH9qUH7IJQCng==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/core": "^7.21.3",
    +        "@svgr/babel-preset": "8.0.0",
    +        "camelcase": "^6.2.0",
    +        "cosmiconfig": "^8.1.3",
    +        "snake-case": "^3.0.4"
    +      },
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      }
    +    },
    +    "node_modules/@svgr/hast-util-to-babel-ast": {
    +      "version": "8.0.0",
    +      "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz",
    +      "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/types": "^7.21.3",
    +        "entities": "^4.4.0"
    +      },
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      }
    +    },
    +    "node_modules/@svgr/plugin-jsx": {
    +      "version": "8.0.1",
    +      "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.0.1.tgz",
    +      "integrity": "sha512-bfCFb+4ZsM3UuKP2t7KmDwn6YV8qVn9HIQJmau6xeQb/iV65Rpi7NBNBWA2hcCd4GKoCqG8hpaaDk5FDR0eH+g==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/core": "^7.21.3",
    +        "@svgr/babel-preset": "8.0.0",
    +        "@svgr/hast-util-to-babel-ast": "8.0.0",
    +        "svg-parser": "^2.0.4"
    +      },
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      },
    +      "peerDependencies": {
    +        "@svgr/core": "*"
    +      }
    +    },
    +    "node_modules/@svgr/plugin-svgo": {
    +      "version": "8.0.1",
    +      "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.0.1.tgz",
    +      "integrity": "sha512-29OJ1QmJgnohQHDAgAuY2h21xWD6TZiXji+hnx+W635RiXTAlHTbjrZDktfqzkN0bOeQEtNe+xgq73/XeWFfSg==",
    +      "peer": true,
    +      "dependencies": {
    +        "cosmiconfig": "^8.1.3",
    +        "deepmerge": "^4.3.1",
    +        "svgo": "^3.0.2"
    +      },
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      },
    +      "peerDependencies": {
    +        "@svgr/core": "*"
    +      }
    +    },
    +    "node_modules/@svgr/webpack": {
    +      "version": "8.0.1",
    +      "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.0.1.tgz",
    +      "integrity": "sha512-zSoeKcbCmfMXjA11uDuCJb+1LWNb3vy6Qw/VHj0Nfcl3UuqwuoZWknHsBIhCWvi4wU9vPui3aq054qjVyZqY4A==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/core": "^7.21.3",
    +        "@babel/plugin-transform-react-constant-elements": "^7.21.3",
    +        "@babel/preset-env": "^7.20.2",
    +        "@babel/preset-react": "^7.18.6",
    +        "@babel/preset-typescript": "^7.21.0",
    +        "@svgr/core": "8.0.0",
    +        "@svgr/plugin-jsx": "8.0.1",
    +        "@svgr/plugin-svgo": "8.0.1"
    +      },
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/gregberge"
    +      }
    +    },
    +    "node_modules/@tootallnate/once": {
    +      "version": "1.1.2",
    +      "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
    +      "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10.13.0"
    +      }
    +    },
    +    "node_modules/@types/babel__core": {
    +      "version": "7.20.1",
    +      "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz",
    +      "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/parser": "^7.20.7",
    +        "@babel/types": "^7.20.7",
    +        "@types/babel__generator": "*",
    +        "@types/babel__template": "*",
    +        "@types/babel__traverse": "*"
    +      }
    +    },
    +    "node_modules/@types/babel__generator": {
    +      "version": "7.6.4",
    +      "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
    +      "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/types": "^7.0.0"
    +      }
    +    },
    +    "node_modules/@types/babel__template": {
    +      "version": "7.4.1",
    +      "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
    +      "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/parser": "^7.1.0",
    +        "@babel/types": "^7.0.0"
    +      }
    +    },
    +    "node_modules/@types/babel__traverse": {
    +      "version": "7.20.1",
    +      "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz",
    +      "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/types": "^7.20.7"
    +      }
    +    },
    +    "node_modules/@types/body-parser": {
    +      "version": "1.19.2",
    +      "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
    +      "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/connect": "*",
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/bonjour": {
    +      "version": "3.5.10",
    +      "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz",
    +      "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/connect": {
    +      "version": "3.4.35",
    +      "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
    +      "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/connect-history-api-fallback": {
    +      "version": "1.5.0",
    +      "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
    +      "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/express-serve-static-core": "*",
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/cookie": {
    +      "version": "0.3.3",
    +      "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz",
    +      "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow=="
    +    },
    +    "node_modules/@types/eslint": {
    +      "version": "8.44.0",
    +      "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz",
    +      "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/estree": "*",
    +        "@types/json-schema": "*"
    +      }
    +    },
    +    "node_modules/@types/eslint-scope": {
    +      "version": "3.7.4",
    +      "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
    +      "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/eslint": "*",
    +        "@types/estree": "*"
    +      }
    +    },
    +    "node_modules/@types/estree": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
    +      "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
    +      "peer": true
    +    },
    +    "node_modules/@types/express": {
    +      "version": "4.17.17",
    +      "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
    +      "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/body-parser": "*",
    +        "@types/express-serve-static-core": "^4.17.33",
    +        "@types/qs": "*",
    +        "@types/serve-static": "*"
    +      }
    +    },
    +    "node_modules/@types/express-serve-static-core": {
    +      "version": "4.17.35",
    +      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz",
    +      "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/node": "*",
    +        "@types/qs": "*",
    +        "@types/range-parser": "*",
    +        "@types/send": "*"
    +      }
    +    },
    +    "node_modules/@types/fs-extra": {
    +      "version": "9.0.13",
    +      "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
    +      "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/glob": {
    +      "version": "7.2.0",
    +      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
    +      "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/minimatch": "*",
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/graceful-fs": {
    +      "version": "4.1.6",
    +      "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
    +      "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/hoist-non-react-statics": {
    +      "version": "3.3.1",
    +      "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
    +      "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
    +      "dependencies": {
    +        "@types/react": "*",
    +        "hoist-non-react-statics": "^3.3.0"
    +      }
    +    },
    +    "node_modules/@types/html-minifier-terser": {
    +      "version": "6.1.0",
    +      "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
    +      "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
    +      "peer": true
    +    },
    +    "node_modules/@types/http-errors": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz",
    +      "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==",
    +      "peer": true
    +    },
    +    "node_modules/@types/http-proxy": {
    +      "version": "1.17.11",
    +      "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz",
    +      "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/invariant": {
    +      "version": "2.2.35",
    +      "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz",
    +      "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg=="
    +    },
    +    "node_modules/@types/istanbul-lib-coverage": {
    +      "version": "2.0.4",
    +      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
    +      "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
    +      "peer": true
    +    },
    +    "node_modules/@types/istanbul-lib-report": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
    +      "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/istanbul-lib-coverage": "*"
    +      }
    +    },
    +    "node_modules/@types/istanbul-reports": {
    +      "version": "3.0.1",
    +      "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
    +      "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/istanbul-lib-report": "*"
    +      }
    +    },
    +    "node_modules/@types/json-schema": {
    +      "version": "7.0.12",
    +      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
    +      "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
    +      "peer": true
    +    },
    +    "node_modules/@types/json5": {
    +      "version": "0.0.29",
    +      "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
    +      "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
    +      "peer": true
    +    },
    +    "node_modules/@types/mime": {
    +      "version": "1.3.2",
    +      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
    +      "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
    +      "peer": true
    +    },
    +    "node_modules/@types/minimatch": {
    +      "version": "5.1.2",
    +      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
    +      "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
    +      "peer": true
    +    },
    +    "node_modules/@types/node": {
    +      "version": "20.4.4",
    +      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.4.tgz",
    +      "integrity": "sha512-CukZhumInROvLq3+b5gLev+vgpsIqC2D0deQr/yS1WnxvmYLlJXZpaQrQiseMY+6xusl79E04UjWoqyr+t1/Ew==",
    +      "peer": true
    +    },
    +    "node_modules/@types/parse-json": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
    +      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
    +      "peer": true
    +    },
    +    "node_modules/@types/prettier": {
    +      "version": "2.7.3",
    +      "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
    +      "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
    +      "peer": true
    +    },
    +    "node_modules/@types/prop-types": {
    +      "version": "15.7.5",
    +      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
    +      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
    +    },
    +    "node_modules/@types/qs": {
    +      "version": "6.9.7",
    +      "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
    +      "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
    +      "peer": true
    +    },
    +    "node_modules/@types/range-parser": {
    +      "version": "1.2.4",
    +      "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
    +      "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
    +      "peer": true
    +    },
    +    "node_modules/@types/react": {
    +      "version": "18.2.7",
    +      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.7.tgz",
    +      "integrity": "sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==",
    +      "dependencies": {
    +        "@types/prop-types": "*",
    +        "@types/scheduler": "*",
    +        "csstype": "^3.0.2"
    +      }
    +    },
    +    "node_modules/@types/react-redux": {
    +      "version": "7.1.25",
    +      "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.25.tgz",
    +      "integrity": "sha512-bAGh4e+w5D8dajd6InASVIyCo4pZLJ66oLb80F9OBLO1gKESbZcRCJpTT6uLXX+HAB57zw1WTdwJdAsewuTweg==",
    +      "dependencies": {
    +        "@types/hoist-non-react-statics": "^3.3.0",
    +        "@types/react": "*",
    +        "hoist-non-react-statics": "^3.3.0",
    +        "redux": "^4.0.0"
    +      }
    +    },
    +    "node_modules/@types/react-transition-group": {
    +      "version": "4.4.6",
    +      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz",
    +      "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==",
    +      "dependencies": {
    +        "@types/react": "*"
    +      }
    +    },
    +    "node_modules/@types/retry": {
    +      "version": "0.12.0",
    +      "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
    +      "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==",
    +      "peer": true
    +    },
    +    "node_modules/@types/scheduler": {
    +      "version": "0.16.3",
    +      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz",
    +      "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ=="
    +    },
    +    "node_modules/@types/schema-utils": {
    +      "version": "2.4.0",
    +      "resolved": "https://registry.npmjs.org/@types/schema-utils/-/schema-utils-2.4.0.tgz",
    +      "integrity": "sha512-454hrj5gz/FXcUE20ygfEiN4DxZ1sprUo0V1gqIqkNZ/CzoEzAZEll2uxMsuyz6BYjiQan4Aa65xbTemfzW9hQ==",
    +      "deprecated": "This is a stub types definition. schema-utils provides its own type definitions, so you do not need this installed.",
    +      "peer": true,
    +      "dependencies": {
    +        "schema-utils": "*"
    +      }
    +    },
    +    "node_modules/@types/send": {
    +      "version": "0.17.1",
    +      "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz",
    +      "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/mime": "^1",
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/serve-index": {
    +      "version": "1.9.1",
    +      "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz",
    +      "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/express": "*"
    +      }
    +    },
    +    "node_modules/@types/serve-static": {
    +      "version": "1.15.2",
    +      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz",
    +      "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/http-errors": "*",
    +        "@types/mime": "*",
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/sockjs": {
    +      "version": "0.3.33",
    +      "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz",
    +      "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/stack-utils": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
    +      "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
    +      "peer": true
    +    },
    +    "node_modules/@types/warning": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz",
    +      "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA=="
    +    },
    +    "node_modules/@types/ws": {
    +      "version": "8.5.5",
    +      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz",
    +      "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/node": "*"
    +      }
    +    },
    +    "node_modules/@types/yargs": {
    +      "version": "16.0.5",
    +      "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
    +      "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/yargs-parser": "*"
    +      }
    +    },
    +    "node_modules/@types/yargs-parser": {
    +      "version": "21.0.0",
    +      "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
    +      "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
    +      "peer": true
    +    },
    +    "node_modules/@webassemblyjs/ast": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
    +      "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "@webassemblyjs/helper-numbers": "1.11.6",
    +        "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
    +      }
    +    },
    +    "node_modules/@webassemblyjs/floating-point-hex-parser": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
    +      "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
    +      "peer": true
    +    },
    +    "node_modules/@webassemblyjs/helper-api-error": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
    +      "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
    +      "peer": true
    +    },
    +    "node_modules/@webassemblyjs/helper-buffer": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
    +      "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
    +      "peer": true
    +    },
    +    "node_modules/@webassemblyjs/helper-numbers": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
    +      "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
    +      "peer": true,
    +      "dependencies": {
    +        "@webassemblyjs/floating-point-hex-parser": "1.11.6",
    +        "@webassemblyjs/helper-api-error": "1.11.6",
    +        "@xtuc/long": "4.2.2"
    +      }
    +    },
    +    "node_modules/@webassemblyjs/helper-wasm-bytecode": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
    +      "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
    +      "peer": true
    +    },
    +    "node_modules/@webassemblyjs/helper-wasm-section": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
    +      "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
    +      "peer": true,
    +      "dependencies": {
    +        "@webassemblyjs/ast": "1.11.6",
    +        "@webassemblyjs/helper-buffer": "1.11.6",
    +        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
    +        "@webassemblyjs/wasm-gen": "1.11.6"
    +      }
    +    },
    +    "node_modules/@webassemblyjs/ieee754": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
    +      "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@xtuc/ieee754": "^1.2.0"
    +      }
    +    },
    +    "node_modules/@webassemblyjs/leb128": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
    +      "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@xtuc/long": "4.2.2"
    +      }
    +    },
    +    "node_modules/@webassemblyjs/utf8": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
    +      "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
    +      "peer": true
    +    },
    +    "node_modules/@webassemblyjs/wasm-edit": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
    +      "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@webassemblyjs/ast": "1.11.6",
    +        "@webassemblyjs/helper-buffer": "1.11.6",
    +        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
    +        "@webassemblyjs/helper-wasm-section": "1.11.6",
    +        "@webassemblyjs/wasm-gen": "1.11.6",
    +        "@webassemblyjs/wasm-opt": "1.11.6",
    +        "@webassemblyjs/wasm-parser": "1.11.6",
    +        "@webassemblyjs/wast-printer": "1.11.6"
    +      }
    +    },
    +    "node_modules/@webassemblyjs/wasm-gen": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
    +      "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@webassemblyjs/ast": "1.11.6",
    +        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
    +        "@webassemblyjs/ieee754": "1.11.6",
    +        "@webassemblyjs/leb128": "1.11.6",
    +        "@webassemblyjs/utf8": "1.11.6"
    +      }
    +    },
    +    "node_modules/@webassemblyjs/wasm-opt": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
    +      "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
    +      "peer": true,
    +      "dependencies": {
    +        "@webassemblyjs/ast": "1.11.6",
    +        "@webassemblyjs/helper-buffer": "1.11.6",
    +        "@webassemblyjs/wasm-gen": "1.11.6",
    +        "@webassemblyjs/wasm-parser": "1.11.6"
    +      }
    +    },
    +    "node_modules/@webassemblyjs/wasm-parser": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
    +      "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@webassemblyjs/ast": "1.11.6",
    +        "@webassemblyjs/helper-api-error": "1.11.6",
    +        "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
    +        "@webassemblyjs/ieee754": "1.11.6",
    +        "@webassemblyjs/leb128": "1.11.6",
    +        "@webassemblyjs/utf8": "1.11.6"
    +      }
    +    },
    +    "node_modules/@webassemblyjs/wast-printer": {
    +      "version": "1.11.6",
    +      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
    +      "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
    +      "peer": true,
    +      "dependencies": {
    +        "@webassemblyjs/ast": "1.11.6",
    +        "@xtuc/long": "4.2.2"
    +      }
    +    },
    +    "node_modules/@webpack-cli/configtest": {
    +      "version": "2.1.1",
    +      "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
    +      "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=14.15.0"
    +      },
    +      "peerDependencies": {
    +        "webpack": "5.x.x",
    +        "webpack-cli": "5.x.x"
    +      }
    +    },
    +    "node_modules/@webpack-cli/info": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
    +      "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=14.15.0"
    +      },
    +      "peerDependencies": {
    +        "webpack": "5.x.x",
    +        "webpack-cli": "5.x.x"
    +      }
    +    },
    +    "node_modules/@webpack-cli/serve": {
    +      "version": "2.0.5",
    +      "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
    +      "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=14.15.0"
    +      },
    +      "peerDependencies": {
    +        "webpack": "5.x.x",
    +        "webpack-cli": "5.x.x"
    +      },
    +      "peerDependenciesMeta": {
    +        "webpack-dev-server": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/@xtuc/ieee754": {
    +      "version": "1.2.0",
    +      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
    +      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
    +      "peer": true
    +    },
    +    "node_modules/@xtuc/long": {
    +      "version": "4.2.2",
    +      "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
    +      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
    +      "peer": true
    +    },
    +    "node_modules/abab": {
    +      "version": "2.0.6",
    +      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
    +      "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
    +      "peer": true
    +    },
    +    "node_modules/accepts": {
    +      "version": "1.3.8",
    +      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
    +      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
    +      "peer": true,
    +      "dependencies": {
    +        "mime-types": "~2.1.34",
    +        "negotiator": "0.6.3"
    +      },
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/acorn": {
    +      "version": "8.10.0",
    +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
    +      "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
    +      "peer": true,
    +      "bin": {
    +        "acorn": "bin/acorn"
    +      },
    +      "engines": {
    +        "node": ">=0.4.0"
    +      }
    +    },
    +    "node_modules/acorn-globals": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
    +      "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
    +      "peer": true,
    +      "dependencies": {
    +        "acorn": "^7.1.1",
    +        "acorn-walk": "^7.1.1"
    +      }
    +    },
    +    "node_modules/acorn-globals/node_modules/acorn": {
    +      "version": "7.4.1",
    +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
    +      "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
    +      "peer": true,
    +      "bin": {
    +        "acorn": "bin/acorn"
    +      },
    +      "engines": {
    +        "node": ">=0.4.0"
    +      }
    +    },
    +    "node_modules/acorn-import-assertions": {
    +      "version": "1.9.0",
    +      "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
    +      "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
    +      "peer": true,
    +      "peerDependencies": {
    +        "acorn": "^8"
    +      }
    +    },
    +    "node_modules/acorn-jsx": {
    +      "version": "5.3.2",
    +      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
    +      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
    +      "peer": true,
    +      "peerDependencies": {
    +        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
    +      }
    +    },
    +    "node_modules/acorn-walk": {
    +      "version": "7.2.0",
    +      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
    +      "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.4.0"
    +      }
    +    },
    +    "node_modules/address": {
    +      "version": "1.2.2",
    +      "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz",
    +      "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 10.0.0"
    +      }
    +    },
    +    "node_modules/adjust-sourcemap-loader": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
    +      "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==",
    +      "peer": true,
    +      "dependencies": {
    +        "loader-utils": "^2.0.0",
    +        "regex-parser": "^2.2.11"
    +      },
    +      "engines": {
    +        "node": ">=8.9"
    +      }
    +    },
    +    "node_modules/agent-base": {
    +      "version": "6.0.2",
    +      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
    +      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "debug": "4"
    +      },
    +      "engines": {
    +        "node": ">= 6.0.0"
    +      }
    +    },
    +    "node_modules/ajv": {
    +      "version": "6.12.6",
    +      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
    +      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
    +      "peer": true,
    +      "dependencies": {
    +        "fast-deep-equal": "^3.1.1",
    +        "fast-json-stable-stringify": "^2.0.0",
    +        "json-schema-traverse": "^0.4.1",
    +        "uri-js": "^4.2.2"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/epoberezkin"
    +      }
    +    },
    +    "node_modules/ajv-formats": {
    +      "version": "2.1.1",
    +      "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
    +      "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
    +      "peer": true,
    +      "dependencies": {
    +        "ajv": "^8.0.0"
    +      },
    +      "peerDependencies": {
    +        "ajv": "^8.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "ajv": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/ajv-formats/node_modules/ajv": {
    +      "version": "8.12.0",
    +      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
    +      "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
    +      "peer": true,
    +      "dependencies": {
    +        "fast-deep-equal": "^3.1.1",
    +        "json-schema-traverse": "^1.0.0",
    +        "require-from-string": "^2.0.2",
    +        "uri-js": "^4.2.2"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/epoberezkin"
    +      }
    +    },
    +    "node_modules/ajv-formats/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==",
    +      "peer": true
    +    },
    +    "node_modules/ajv-keywords": {
    +      "version": "3.5.2",
    +      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
    +      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
    +      "peer": true,
    +      "peerDependencies": {
    +        "ajv": "^6.9.1"
    +      }
    +    },
    +    "node_modules/ansi-escapes": {
    +      "version": "4.3.2",
    +      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
    +      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "type-fest": "^0.21.3"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/ansi-html-community": {
    +      "version": "0.0.8",
    +      "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
    +      "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
    +      "engines": [
    +        "node >= 0.8.0"
    +      ],
    +      "peer": true,
    +      "bin": {
    +        "ansi-html": "bin/ansi-html"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "normalize-path": "^3.0.0",
    +        "picomatch": "^2.0.4"
    +      },
    +      "engines": {
    +        "node": ">= 8"
    +      }
    +    },
    +    "node_modules/argparse": {
    +      "version": "1.0.10",
    +      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
    +      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
    +      "peer": true,
    +      "dependencies": {
    +        "sprintf-js": "~1.0.2"
    +      }
    +    },
    +    "node_modules/aria-hidden": {
    +      "version": "1.2.3",
    +      "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz",
    +      "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==",
    +      "dependencies": {
    +        "tslib": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/aria-query": {
    +      "version": "5.3.0",
    +      "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
    +      "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
    +      "peer": true,
    +      "dependencies": {
    +        "dequal": "^2.0.3"
    +      }
    +    },
    +    "node_modules/array-buffer-byte-length": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
    +      "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "is-array-buffer": "^3.0.1"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/array-flatten": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
    +      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
    +      "peer": true
    +    },
    +    "node_modules/array-includes": {
    +      "version": "3.1.6",
    +      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz",
    +      "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4",
    +        "get-intrinsic": "^1.1.3",
    +        "is-string": "^1.0.7"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/array-union": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
    +      "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
    +      "peer": true,
    +      "dependencies": {
    +        "array-uniq": "^1.0.1"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/array-uniq": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
    +      "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/array.prototype.flat": {
    +      "version": "1.3.1",
    +      "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz",
    +      "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4",
    +        "es-shim-unscopables": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/array.prototype.flatmap": {
    +      "version": "1.3.1",
    +      "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz",
    +      "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4",
    +        "es-shim-unscopables": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/array.prototype.tosorted": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz",
    +      "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4",
    +        "es-shim-unscopables": "^1.0.0",
    +        "get-intrinsic": "^1.1.3"
    +      }
    +    },
    +    "node_modules/arraybuffer.prototype.slice": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz",
    +      "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==",
    +      "peer": true,
    +      "dependencies": {
    +        "array-buffer-byte-length": "^1.0.0",
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.2.0",
    +        "get-intrinsic": "^1.2.1",
    +        "is-array-buffer": "^3.0.2",
    +        "is-shared-array-buffer": "^1.0.2"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/assert-ok": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/assert-ok/-/assert-ok-1.0.0.tgz",
    +      "integrity": "sha512-lCvYmCpMl8c1tp9ynExhoDEk0gGW43SVVC3RE1VYrrVKhNMy8GHfdiwZdoIM6a605s56bUAbENQxtOC0uZp3wg=="
    +    },
    +    "node_modules/ast-types-flow": {
    +      "version": "0.0.7",
    +      "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
    +      "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==",
    +      "peer": true
    +    },
    +    "node_modules/asynckit": {
    +      "version": "0.4.0",
    +      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
    +      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
    +    },
    +    "node_modules/at-least-node": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
    +      "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 4.0.0"
    +      }
    +    },
    +    "node_modules/attr-accept": {
    +      "version": "2.2.2",
    +      "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz",
    +      "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==",
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/autoprefixer": {
    +      "version": "10.4.14",
    +      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
    +      "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
    +      "funding": [
    +        {
    +          "type": "opencollective",
    +          "url": "https://opencollective.com/postcss/"
    +        },
    +        {
    +          "type": "tidelift",
    +          "url": "https://tidelift.com/funding/github/npm/autoprefixer"
    +        }
    +      ],
    +      "peer": true,
    +      "dependencies": {
    +        "browserslist": "^4.21.5",
    +        "caniuse-lite": "^1.0.30001464",
    +        "fraction.js": "^4.2.0",
    +        "normalize-range": "^0.1.2",
    +        "picocolors": "^1.0.0",
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "bin": {
    +        "autoprefixer": "bin/autoprefixer"
    +      },
    +      "engines": {
    +        "node": "^10 || ^12 || >=14"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.1.0"
    +      }
    +    },
    +    "node_modules/available-typed-arrays": {
    +      "version": "1.0.5",
    +      "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
    +      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/axe-core": {
    +      "version": "4.7.2",
    +      "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz",
    +      "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/axios": {
    +      "version": "0.27.2",
    +      "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
    +      "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
    +      "dependencies": {
    +        "follow-redirects": "^1.14.9",
    +        "form-data": "^4.0.0"
    +      }
    +    },
    +    "node_modules/axios-cache-interceptor": {
    +      "version": "0.10.7",
    +      "resolved": "https://registry.npmjs.org/axios-cache-interceptor/-/axios-cache-interceptor-0.10.7.tgz",
    +      "integrity": "sha512-UjpxChG5DpF6Kf1IPGMLOzRDNL8ZNS6TOn1jTaVvCE7cWFU904jJwi0T1s+IbijpnLEjK2iq5uLIuR8Sj+RsFQ==",
    +      "dependencies": {
    +        "cache-parser": "^1.2.4",
    +        "fast-defer": "^1.1.7",
    +        "object-code": "^1.2.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/ArthurFiorette/axios-cache-interceptor?sponsor=1"
    +      }
    +    },
    +    "node_modules/axobject-query": {
    +      "version": "3.2.1",
    +      "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
    +      "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==",
    +      "peer": true,
    +      "dependencies": {
    +        "dequal": "^2.0.3"
    +      }
    +    },
    +    "node_modules/b4a": {
    +      "version": "1.6.4",
    +      "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
    +      "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==",
    +      "peer": true
    +    },
    +    "node_modules/babel-jest": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
    +      "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/transform": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/babel__core": "^7.1.14",
    +        "babel-plugin-istanbul": "^6.1.1",
    +        "babel-preset-jest": "^27.5.1",
    +        "chalk": "^4.0.0",
    +        "graceful-fs": "^4.2.9",
    +        "slash": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.8.0"
    +      }
    +    },
    +    "node_modules/babel-jest/node_modules/slash": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
    +      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/babel-loader": {
    +      "version": "9.1.3",
    +      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz",
    +      "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==",
    +      "peer": true,
    +      "dependencies": {
    +        "find-cache-dir": "^4.0.0",
    +        "schema-utils": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 14.15.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.12.0",
    +        "webpack": ">=5"
    +      }
    +    },
    +    "node_modules/babel-loader/node_modules/ajv": {
    +      "version": "8.12.0",
    +      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
    +      "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
    +      "peer": true,
    +      "dependencies": {
    +        "fast-deep-equal": "^3.1.1",
    +        "json-schema-traverse": "^1.0.0",
    +        "require-from-string": "^2.0.2",
    +        "uri-js": "^4.2.2"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/epoberezkin"
    +      }
    +    },
    +    "node_modules/babel-loader/node_modules/ajv-keywords": {
    +      "version": "5.1.0",
    +      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
    +      "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
    +      "peer": true,
    +      "dependencies": {
    +        "fast-deep-equal": "^3.1.3"
    +      },
    +      "peerDependencies": {
    +        "ajv": "^8.8.2"
    +      }
    +    },
    +    "node_modules/babel-loader/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==",
    +      "peer": true
    +    },
    +    "node_modules/babel-loader/node_modules/schema-utils": {
    +      "version": "4.2.0",
    +      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
    +      "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/json-schema": "^7.0.9",
    +        "ajv": "^8.9.0",
    +        "ajv-formats": "^2.1.1",
    +        "ajv-keywords": "^5.1.0"
    +      },
    +      "engines": {
    +        "node": ">= 12.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      }
    +    },
    +    "node_modules/babel-plugin-istanbul": {
    +      "version": "6.1.1",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
    +      "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-plugin-utils": "^7.0.0",
    +        "@istanbuljs/load-nyc-config": "^1.0.0",
    +        "@istanbuljs/schema": "^0.1.2",
    +        "istanbul-lib-instrument": "^5.0.4",
    +        "test-exclude": "^6.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/babel-plugin-jest-hoist": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
    +      "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/template": "^7.3.3",
    +        "@babel/types": "^7.3.3",
    +        "@types/babel__core": "^7.0.0",
    +        "@types/babel__traverse": "^7.0.6"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/babel-plugin-polyfill-corejs2": {
    +      "version": "0.4.5",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz",
    +      "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/compat-data": "^7.22.6",
    +        "@babel/helper-define-polyfill-provider": "^0.4.2",
    +        "semver": "^6.3.1"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
    +      }
    +    },
    +    "node_modules/babel-plugin-polyfill-corejs3": {
    +      "version": "0.8.3",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz",
    +      "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-define-polyfill-provider": "^0.4.2",
    +        "core-js-compat": "^3.31.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
    +      }
    +    },
    +    "node_modules/babel-plugin-polyfill-regenerator": {
    +      "version": "0.5.2",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz",
    +      "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/helper-define-polyfill-provider": "^0.4.2"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
    +      }
    +    },
    +    "node_modules/babel-plugin-react-intl": {
    +      "version": "7.9.4",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-react-intl/-/babel-plugin-react-intl-7.9.4.tgz",
    +      "integrity": "sha512-cMKrHEXrw43yT4M89Wbgq8A8N8lffSquj1Piwov/HVukR7jwOw8gf9btXNsQhT27ccyqEwy+M286JQYy0jby2g==",
    +      "deprecated": "this package has been renamed to babel-plugin-formatjs",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/core": "^7.9.0",
    +        "@babel/helper-plugin-utils": "^7.8.3",
    +        "@babel/types": "^7.9.5",
    +        "@formatjs/ts-transformer": "^2.6.0",
    +        "@types/babel__core": "^7.1.7",
    +        "@types/fs-extra": "^9.0.1",
    +        "@types/schema-utils": "^2.4.0",
    +        "fs-extra": "^9.0.0",
    +        "intl-messageformat-parser": "^5.3.7",
    +        "schema-utils": "^2.6.6"
    +      }
    +    },
    +    "node_modules/babel-plugin-react-intl/node_modules/@formatjs/ecma402-abstract": {
    +      "version": "1.5.0",
    +      "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.5.0.tgz",
    +      "integrity": "sha512-wXv36yo+mfWllweN0Fq7sUs7PUiNopn7I0JpLTe3hGu6ZMR4CV7LqK1llhB18pndwpKoafQKb1et2DCJAOW20Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "tslib": "^2.0.1"
    +      }
    +    },
    +    "node_modules/babel-plugin-react-intl/node_modules/@formatjs/ts-transformer": {
    +      "version": "2.13.0",
    +      "resolved": "https://registry.npmjs.org/@formatjs/ts-transformer/-/ts-transformer-2.13.0.tgz",
    +      "integrity": "sha512-mu7sHXZk1NWZrQ3eUqugpSYo8x5/tXkrI4uIbFqCEC0eNgQaIcoKgVeDFgDAcgG+cEme2atAUYSFF+DFWC4org==",
    +      "peer": true,
    +      "dependencies": {
    +        "intl-messageformat-parser": "6.1.2",
    +        "tslib": "^2.0.1",
    +        "typescript": "^4.0"
    +      },
    +      "peerDependencies": {
    +        "ts-jest": "^26.4.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "ts-jest": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/babel-plugin-react-intl/node_modules/@formatjs/ts-transformer/node_modules/intl-messageformat-parser": {
    +      "version": "6.1.2",
    +      "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-6.1.2.tgz",
    +      "integrity": "sha512-4GQDEPhl/ZMNDKwMsLqyw1LG2IAWjmLJXdmnRcHKeLQzpgtNYZI6lVw1279pqIkRk2MfKb9aDsVFzm565azK5A==",
    +      "deprecated": "We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser",
    +      "peer": true,
    +      "dependencies": {
    +        "@formatjs/ecma402-abstract": "1.5.0",
    +        "tslib": "^2.0.1"
    +      }
    +    },
    +    "node_modules/babel-plugin-react-intl/node_modules/schema-utils": {
    +      "version": "2.7.1",
    +      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
    +      "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/json-schema": "^7.0.5",
    +        "ajv": "^6.12.4",
    +        "ajv-keywords": "^3.5.2"
    +      },
    +      "engines": {
    +        "node": ">= 8.9.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      }
    +    },
    +    "node_modules/babel-plugin-transform-imports": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-imports/-/babel-plugin-transform-imports-2.0.0.tgz",
    +      "integrity": "sha512-65ewumYJ85QiXdcB/jmiU0y0jg6eL6CdnDqQAqQ8JMOKh1E52VPG3NJzbVKWcgovUR5GBH8IWpCXQ7I8Q3wjgw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/types": "^7.4",
    +        "is-valid-path": "^0.1.1"
    +      }
    +    },
    +    "node_modules/babel-polyfill": {
    +      "version": "6.26.0",
    +      "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
    +      "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "babel-runtime": "^6.26.0",
    +        "core-js": "^2.5.0",
    +        "regenerator-runtime": "^0.10.5"
    +      }
    +    },
    +    "node_modules/babel-polyfill/node_modules/regenerator-runtime": {
    +      "version": "0.10.5",
    +      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
    +      "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==",
    +      "peer": true
    +    },
    +    "node_modules/babel-preset-current-node-syntax": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
    +      "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/plugin-syntax-async-generators": "^7.8.4",
    +        "@babel/plugin-syntax-bigint": "^7.8.3",
    +        "@babel/plugin-syntax-class-properties": "^7.8.3",
    +        "@babel/plugin-syntax-import-meta": "^7.8.3",
    +        "@babel/plugin-syntax-json-strings": "^7.8.3",
    +        "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
    +        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
    +        "@babel/plugin-syntax-numeric-separator": "^7.8.3",
    +        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
    +        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
    +        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
    +        "@babel/plugin-syntax-top-level-await": "^7.8.3"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0"
    +      }
    +    },
    +    "node_modules/babel-preset-jest": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
    +      "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
    +      "peer": true,
    +      "dependencies": {
    +        "babel-plugin-jest-hoist": "^27.5.1",
    +        "babel-preset-current-node-syntax": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      },
    +      "peerDependencies": {
    +        "@babel/core": "^7.0.0"
    +      }
    +    },
    +    "node_modules/babel-runtime": {
    +      "version": "6.26.0",
    +      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
    +      "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
    +      "peer": true,
    +      "dependencies": {
    +        "core-js": "^2.4.0",
    +        "regenerator-runtime": "^0.11.0"
    +      }
    +    },
    +    "node_modules/babel-runtime/node_modules/regenerator-runtime": {
    +      "version": "0.11.1",
    +      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
    +      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
    +      "peer": true
    +    },
    +    "node_modules/balanced-match": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
    +      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
    +    },
    +    "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==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/feross"
    +        },
    +        {
    +          "type": "patreon",
    +          "url": "https://www.patreon.com/feross"
    +        },
    +        {
    +          "type": "consulting",
    +          "url": "https://feross.org/support"
    +        }
    +      ],
    +      "peer": true
    +    },
    +    "node_modules/batch": {
    +      "version": "0.6.1",
    +      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
    +      "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
    +      "peer": true
    +    },
    +    "node_modules/big.js": {
    +      "version": "5.2.2",
    +      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
    +      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/binary-extensions": {
    +      "version": "2.2.0",
    +      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
    +      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/bl": {
    +      "version": "4.1.0",
    +      "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
    +      "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
    +      "peer": true,
    +      "dependencies": {
    +        "buffer": "^5.5.0",
    +        "inherits": "^2.0.4",
    +        "readable-stream": "^3.4.0"
    +      }
    +    },
    +    "node_modules/bl/node_modules/readable-stream": {
    +      "version": "3.6.2",
    +      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
    +      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
    +      "peer": true,
    +      "dependencies": {
    +        "inherits": "^2.0.3",
    +        "string_decoder": "^1.1.1",
    +        "util-deprecate": "^1.0.1"
    +      },
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/body-parser": {
    +      "version": "1.20.1",
    +      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
    +      "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
    +      "peer": true,
    +      "dependencies": {
    +        "bytes": "3.1.2",
    +        "content-type": "~1.0.4",
    +        "debug": "2.6.9",
    +        "depd": "2.0.0",
    +        "destroy": "1.2.0",
    +        "http-errors": "2.0.0",
    +        "iconv-lite": "0.4.24",
    +        "on-finished": "2.4.1",
    +        "qs": "6.11.0",
    +        "raw-body": "2.5.1",
    +        "type-is": "~1.6.18",
    +        "unpipe": "1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.8",
    +        "npm": "1.2.8000 || >= 1.4.16"
    +      }
    +    },
    +    "node_modules/body-parser/node_modules/debug": {
    +      "version": "2.6.9",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
    +      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "2.0.0"
    +      }
    +    },
    +    "node_modules/body-parser/node_modules/ms": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
    +      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
    +      "peer": true
    +    },
    +    "node_modules/bonjour-service": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz",
    +      "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==",
    +      "peer": true,
    +      "dependencies": {
    +        "array-flatten": "^2.1.2",
    +        "dns-equal": "^1.0.0",
    +        "fast-deep-equal": "^3.1.3",
    +        "multicast-dns": "^7.2.5"
    +      }
    +    },
    +    "node_modules/bonjour-service/node_modules/array-flatten": {
    +      "version": "2.1.2",
    +      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
    +      "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
    +      "peer": true
    +    },
    +    "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==",
    +      "peer": true
    +    },
    +    "node_modules/bootstrap": {
    +      "version": "4.6.2",
    +      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz",
    +      "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/twbs"
    +        },
    +        {
    +          "type": "opencollective",
    +          "url": "https://opencollective.com/bootstrap"
    +        }
    +      ],
    +      "peerDependencies": {
    +        "jquery": "1.9.1 - 3",
    +        "popper.js": "^1.16.1"
    +      }
    +    },
    +    "node_modules/brace-expansion": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
    +      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
    +      "dependencies": {
    +        "balanced-match": "^1.0.0"
    +      }
    +    },
    +    "node_modules/braces": {
    +      "version": "3.0.2",
    +      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
    +      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
    +      "peer": true,
    +      "dependencies": {
    +        "fill-range": "^7.0.1"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/browser-process-hrtime": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
    +      "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
    +      "peer": true
    +    },
    +    "node_modules/browserslist": {
    +      "version": "4.21.9",
    +      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz",
    +      "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
    +      "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"
    +        }
    +      ],
    +      "peer": true,
    +      "dependencies": {
    +        "caniuse-lite": "^1.0.30001503",
    +        "electron-to-chromium": "^1.4.431",
    +        "node-releases": "^2.0.12",
    +        "update-browserslist-db": "^1.0.11"
    +      },
    +      "bin": {
    +        "browserslist": "cli.js"
    +      },
    +      "engines": {
    +        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
    +      }
    +    },
    +    "node_modules/bser": {
    +      "version": "2.1.1",
    +      "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
    +      "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "node-int64": "^0.4.0"
    +      }
    +    },
    +    "node_modules/buffer": {
    +      "version": "5.7.1",
    +      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
    +      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/feross"
    +        },
    +        {
    +          "type": "patreon",
    +          "url": "https://www.patreon.com/feross"
    +        },
    +        {
    +          "type": "consulting",
    +          "url": "https://feross.org/support"
    +        }
    +      ],
    +      "peer": true,
    +      "dependencies": {
    +        "base64-js": "^1.3.1",
    +        "ieee754": "^1.1.13"
    +      }
    +    },
    +    "node_modules/buffer-from": {
    +      "version": "1.1.2",
    +      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
    +      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
    +      "peer": true
    +    },
    +    "node_modules/bytes": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
    +      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/cache-parser": {
    +      "version": "1.2.4",
    +      "resolved": "https://registry.npmjs.org/cache-parser/-/cache-parser-1.2.4.tgz",
    +      "integrity": "sha512-O0KwuHuJnbHUrghHi2kGp0SxnWSIBXTYt7M8WVhW0kbPRUNUKoE/Of6e1rRD6AAxmfxFunKnt90yEK09D+sc5g=="
    +    },
    +    "node_modules/call-bind": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
    +      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
    +      "peer": true,
    +      "dependencies": {
    +        "function-bind": "^1.1.1",
    +        "get-intrinsic": "^1.0.2"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/callsites": {
    +      "version": "3.1.0",
    +      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
    +      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/camel-case": {
    +      "version": "4.1.2",
    +      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
    +      "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
    +      "peer": true,
    +      "dependencies": {
    +        "pascal-case": "^3.1.2",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/camelcase": {
    +      "version": "6.3.0",
    +      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
    +      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "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.30001517",
    +      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz",
    +      "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==",
    +      "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"
    +        }
    +      ],
    +      "peer": true
    +    },
    +    "node_modules/cast-array": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/cast-array/-/cast-array-1.0.1.tgz",
    +      "integrity": "sha512-EiqtV+M9L42wd0IRgYjgVGDq7vdNBUUrdecd03QReJp8pIr59o2A1b0XfP+aCUlzLKx2E7zVetaogeJCtiHa+w==",
    +      "dependencies": {
    +        "isarray": "0.0.1"
    +      }
    +    },
    +    "node_modules/chalk": {
    +      "version": "4.1.2",
    +      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
    +      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
    +      "peer": true,
    +      "dependencies": {
    +        "ansi-styles": "^4.1.0",
    +        "supports-color": "^7.1.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/chalk/chalk?sponsor=1"
    +      }
    +    },
    +    "node_modules/char-regex": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
    +      "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/chokidar": {
    +      "version": "3.5.3",
    +      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
    +      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
    +      "funding": [
    +        {
    +          "type": "individual",
    +          "url": "https://paulmillr.com/funding/"
    +        }
    +      ],
    +      "peer": true,
    +      "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"
    +      },
    +      "optionalDependencies": {
    +        "fsevents": "~2.3.2"
    +      }
    +    },
    +    "node_modules/chownr": {
    +      "version": "1.1.4",
    +      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
    +      "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
    +      "peer": true
    +    },
    +    "node_modules/chrome-trace-event": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
    +      "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6.0"
    +      }
    +    },
    +    "node_modules/ci-info": {
    +      "version": "3.8.0",
    +      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
    +      "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/sibiraj-s"
    +        }
    +      ],
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/cjs-module-lexer": {
    +      "version": "1.2.3",
    +      "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
    +      "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
    +      "peer": true
    +    },
    +    "node_modules/classnames": {
    +      "version": "2.3.2",
    +      "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
    +      "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
    +    },
    +    "node_modules/clean-css": {
    +      "version": "5.3.2",
    +      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz",
    +      "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==",
    +      "peer": true,
    +      "dependencies": {
    +        "source-map": "~0.6.0"
    +      },
    +      "engines": {
    +        "node": ">= 10.0"
    +      }
    +    },
    +    "node_modules/clean-css/node_modules/source-map": {
    +      "version": "0.6.1",
    +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    +      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/clean-webpack-plugin": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz",
    +      "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==",
    +      "peer": true,
    +      "dependencies": {
    +        "del": "^4.1.1"
    +      },
    +      "engines": {
    +        "node": ">=10.0.0"
    +      },
    +      "peerDependencies": {
    +        "webpack": ">=4.0.0 <6.0.0"
    +      }
    +    },
    +    "node_modules/cliui": {
    +      "version": "7.0.4",
    +      "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
    +      "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "string-width": "^4.2.0",
    +        "strip-ansi": "^6.0.0",
    +        "wrap-ansi": "^7.0.0"
    +      }
    +    },
    +    "node_modules/clone-deep": {
    +      "version": "4.0.1",
    +      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
    +      "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-plain-object": "^2.0.4",
    +        "kind-of": "^6.0.2",
    +        "shallow-clone": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/co": {
    +      "version": "4.6.0",
    +      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
    +      "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
    +      "peer": true,
    +      "engines": {
    +        "iojs": ">= 1.0.0",
    +        "node": ">= 0.12.0"
    +      }
    +    },
    +    "node_modules/collect-v8-coverage": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
    +      "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
    +      "peer": true
    +    },
    +    "node_modules/color": {
    +      "version": "4.2.3",
    +      "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
    +      "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
    +      "peer": true,
    +      "dependencies": {
    +        "color-convert": "^2.0.1",
    +        "color-string": "^1.9.0"
    +      },
    +      "engines": {
    +        "node": ">=12.5.0"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "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==",
    +      "peer": true
    +    },
    +    "node_modules/color-string": {
    +      "version": "1.9.1",
    +      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
    +      "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
    +      "peer": true,
    +      "dependencies": {
    +        "color-name": "^1.0.0",
    +        "simple-swizzle": "^0.2.2"
    +      }
    +    },
    +    "node_modules/colord": {
    +      "version": "2.9.3",
    +      "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
    +      "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
    +      "peer": true
    +    },
    +    "node_modules/colorette": {
    +      "version": "2.0.20",
    +      "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
    +      "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
    +      "peer": true
    +    },
    +    "node_modules/combined-stream": {
    +      "version": "1.0.8",
    +      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
    +      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
    +      "dependencies": {
    +        "delayed-stream": "~1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/commander": {
    +      "version": "4.1.1",
    +      "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
    +      "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/common-path-prefix": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
    +      "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
    +      "peer": true
    +    },
    +    "node_modules/component-emitter": {
    +      "version": "1.3.0",
    +      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
    +      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
    +      "peer": true
    +    },
    +    "node_modules/compressible": {
    +      "version": "2.0.18",
    +      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
    +      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
    +      "peer": true,
    +      "dependencies": {
    +        "mime-db": ">= 1.43.0 < 2"
    +      },
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/compression": {
    +      "version": "1.7.4",
    +      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
    +      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "accepts": "~1.3.5",
    +        "bytes": "3.0.0",
    +        "compressible": "~2.0.16",
    +        "debug": "2.6.9",
    +        "on-headers": "~1.0.2",
    +        "safe-buffer": "5.1.2",
    +        "vary": "~1.1.2"
    +      },
    +      "engines": {
    +        "node": ">= 0.8.0"
    +      }
    +    },
    +    "node_modules/compression/node_modules/bytes": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
    +      "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/compression/node_modules/debug": {
    +      "version": "2.6.9",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
    +      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "2.0.0"
    +      }
    +    },
    +    "node_modules/compression/node_modules/ms": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
    +      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
    +      "peer": true
    +    },
    +    "node_modules/compression/node_modules/safe-buffer": {
    +      "version": "5.1.2",
    +      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
    +      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
    +      "peer": true
    +    },
    +    "node_modules/concat-map": {
    +      "version": "0.0.1",
    +      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
    +      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
    +    },
    +    "node_modules/confusing-browser-globals": {
    +      "version": "1.0.11",
    +      "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
    +      "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
    +      "peer": true
    +    },
    +    "node_modules/connect-history-api-fallback": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
    +      "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.8"
    +      }
    +    },
    +    "node_modules/content-disposition": {
    +      "version": "0.5.4",
    +      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
    +      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "safe-buffer": "5.2.1"
    +      },
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/content-type": {
    +      "version": "1.0.5",
    +      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
    +      "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/convert-source-map": {
    +      "version": "1.9.0",
    +      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
    +      "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
    +      "peer": true
    +    },
    +    "node_modules/cookie": {
    +      "version": "0.4.2",
    +      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
    +      "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/cookie-signature": {
    +      "version": "1.0.6",
    +      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
    +      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
    +      "peer": true
    +    },
    +    "node_modules/cookiejar": {
    +      "version": "2.1.4",
    +      "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
    +      "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
    +      "peer": true
    +    },
    +    "node_modules/core-js": {
    +      "version": "2.6.12",
    +      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
    +      "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
    +      "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
    +      "hasInstallScript": true,
    +      "peer": true
    +    },
    +    "node_modules/core-js-compat": {
    +      "version": "3.31.1",
    +      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz",
    +      "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==",
    +      "peer": true,
    +      "dependencies": {
    +        "browserslist": "^4.21.9"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/core-js"
    +      }
    +    },
    +    "node_modules/core-js-pure": {
    +      "version": "3.31.1",
    +      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.31.1.tgz",
    +      "integrity": "sha512-w+C62kvWti0EPs4KPMCMVv9DriHSXfQOCQ94bGGBiEW5rrbtt/Rz8n5Krhfw9cpFyzXBjf3DB3QnPdEzGDY4Fw==",
    +      "hasInstallScript": true,
    +      "peer": true,
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/core-js"
    +      }
    +    },
    +    "node_modules/core-util-is": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
    +      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
    +      "peer": true
    +    },
    +    "node_modules/cosmiconfig": {
    +      "version": "8.2.0",
    +      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz",
    +      "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "import-fresh": "^3.2.1",
    +        "js-yaml": "^4.1.0",
    +        "parse-json": "^5.0.0",
    +        "path-type": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=14"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/d-fischer"
    +      }
    +    },
    +    "node_modules/cosmiconfig/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==",
    +      "peer": true
    +    },
    +    "node_modules/cosmiconfig/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==",
    +      "peer": true,
    +      "dependencies": {
    +        "argparse": "^2.0.1"
    +      },
    +      "bin": {
    +        "js-yaml": "bin/js-yaml.js"
    +      }
    +    },
    +    "node_modules/cross-spawn": {
    +      "version": "7.0.3",
    +      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
    +      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
    +      "peer": true,
    +      "dependencies": {
    +        "path-key": "^3.1.0",
    +        "shebang-command": "^2.0.0",
    +        "which": "^2.0.1"
    +      },
    +      "engines": {
    +        "node": ">= 8"
    +      }
    +    },
    +    "node_modules/css-declaration-sorter": {
    +      "version": "6.4.1",
    +      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz",
    +      "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^10 || ^12 || >=14"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.0.9"
    +      }
    +    },
    +    "node_modules/css-loader": {
    +      "version": "5.2.7",
    +      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz",
    +      "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==",
    +      "peer": true,
    +      "dependencies": {
    +        "icss-utils": "^5.1.0",
    +        "loader-utils": "^2.0.0",
    +        "postcss": "^8.2.15",
    +        "postcss-modules-extract-imports": "^3.0.0",
    +        "postcss-modules-local-by-default": "^4.0.0",
    +        "postcss-modules-scope": "^3.0.0",
    +        "postcss-modules-values": "^4.0.0",
    +        "postcss-value-parser": "^4.1.0",
    +        "schema-utils": "^3.0.0",
    +        "semver": "^7.3.5"
    +      },
    +      "engines": {
    +        "node": ">= 10.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "webpack": "^4.27.0 || ^5.0.0"
    +      }
    +    },
    +    "node_modules/css-loader/node_modules/lru-cache": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
    +      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "yallist": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/css-loader/node_modules/semver": {
    +      "version": "7.5.4",
    +      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
    +      "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
    +      "peer": true,
    +      "dependencies": {
    +        "lru-cache": "^6.0.0"
    +      },
    +      "bin": {
    +        "semver": "bin/semver.js"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/css-loader/node_modules/yallist": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
    +      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
    +      "peer": true
    +    },
    +    "node_modules/css-mediaquery": {
    +      "version": "0.1.2",
    +      "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz",
    +      "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q=="
    +    },
    +    "node_modules/css-select": {
    +      "version": "4.3.0",
    +      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
    +      "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "boolbase": "^1.0.0",
    +        "css-what": "^6.0.1",
    +        "domhandler": "^4.3.1",
    +        "domutils": "^2.8.0",
    +        "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==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 6"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/fb55"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "bin": {
    +        "cssesc": "bin/cssesc"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/cssnano": {
    +      "version": "6.0.1",
    +      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz",
    +      "integrity": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==",
    +      "peer": true,
    +      "dependencies": {
    +        "cssnano-preset-default": "^6.0.1",
    +        "lilconfig": "^2.1.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/cssnano"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/cssnano-preset-default": {
    +      "version": "6.0.1",
    +      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz",
    +      "integrity": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "css-declaration-sorter": "^6.3.1",
    +        "cssnano-utils": "^4.0.0",
    +        "postcss-calc": "^9.0.0",
    +        "postcss-colormin": "^6.0.0",
    +        "postcss-convert-values": "^6.0.0",
    +        "postcss-discard-comments": "^6.0.0",
    +        "postcss-discard-duplicates": "^6.0.0",
    +        "postcss-discard-empty": "^6.0.0",
    +        "postcss-discard-overridden": "^6.0.0",
    +        "postcss-merge-longhand": "^6.0.0",
    +        "postcss-merge-rules": "^6.0.1",
    +        "postcss-minify-font-values": "^6.0.0",
    +        "postcss-minify-gradients": "^6.0.0",
    +        "postcss-minify-params": "^6.0.0",
    +        "postcss-minify-selectors": "^6.0.0",
    +        "postcss-normalize-charset": "^6.0.0",
    +        "postcss-normalize-display-values": "^6.0.0",
    +        "postcss-normalize-positions": "^6.0.0",
    +        "postcss-normalize-repeat-style": "^6.0.0",
    +        "postcss-normalize-string": "^6.0.0",
    +        "postcss-normalize-timing-functions": "^6.0.0",
    +        "postcss-normalize-unicode": "^6.0.0",
    +        "postcss-normalize-url": "^6.0.0",
    +        "postcss-normalize-whitespace": "^6.0.0",
    +        "postcss-ordered-values": "^6.0.0",
    +        "postcss-reduce-initial": "^6.0.0",
    +        "postcss-reduce-transforms": "^6.0.0",
    +        "postcss-svgo": "^6.0.0",
    +        "postcss-unique-selectors": "^6.0.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/cssnano-utils": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz",
    +      "integrity": "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/csso": {
    +      "version": "5.0.5",
    +      "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
    +      "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "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==",
    +      "peer": true
    +    },
    +    "node_modules/cssom": {
    +      "version": "0.4.4",
    +      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
    +      "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
    +      "peer": true
    +    },
    +    "node_modules/cssstyle": {
    +      "version": "2.3.0",
    +      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
    +      "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
    +      "peer": true,
    +      "dependencies": {
    +        "cssom": "~0.3.6"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/cssstyle/node_modules/cssom": {
    +      "version": "0.3.8",
    +      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
    +      "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
    +      "peer": true
    +    },
    +    "node_modules/csstype": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
    +      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
    +    },
    +    "node_modules/damerau-levenshtein": {
    +      "version": "1.0.8",
    +      "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
    +      "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
    +      "peer": true
    +    },
    +    "node_modules/data-urls": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
    +      "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "abab": "^2.0.3",
    +        "whatwg-mimetype": "^2.3.0",
    +        "whatwg-url": "^8.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/debug": {
    +      "version": "4.3.4",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
    +      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "2.1.2"
    +      },
    +      "engines": {
    +        "node": ">=6.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "supports-color": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/decimal.js": {
    +      "version": "10.4.3",
    +      "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
    +      "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
    +      "peer": true
    +    },
    +    "node_modules/decode-uri-component": {
    +      "version": "0.2.2",
    +      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
    +      "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
    +      "engines": {
    +        "node": ">=0.10"
    +      }
    +    },
    +    "node_modules/decompress-response": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
    +      "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "mimic-response": "^3.1.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/dedent": {
    +      "version": "0.7.0",
    +      "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
    +      "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
    +      "peer": true
    +    },
    +    "node_modules/deep-extend": {
    +      "version": "0.6.0",
    +      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
    +      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4.0.0"
    +      }
    +    },
    +    "node_modules/deep-is": {
    +      "version": "0.1.4",
    +      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
    +      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
    +      "peer": true
    +    },
    +    "node_modules/deepmerge": {
    +      "version": "4.3.1",
    +      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
    +      "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/default-gateway": {
    +      "version": "6.0.3",
    +      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
    +      "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
    +      "peer": true,
    +      "dependencies": {
    +        "execa": "^5.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 10"
    +      }
    +    },
    +    "node_modules/define-lazy-prop": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
    +      "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/define-properties": {
    +      "version": "1.2.0",
    +      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
    +      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
    +      "peer": true,
    +      "dependencies": {
    +        "has-property-descriptors": "^1.0.0",
    +        "object-keys": "^1.1.1"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/del": {
    +      "version": "4.1.1",
    +      "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
    +      "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/glob": "^7.1.1",
    +        "globby": "^6.1.0",
    +        "is-path-cwd": "^2.0.0",
    +        "is-path-in-cwd": "^2.0.0",
    +        "p-map": "^2.0.0",
    +        "pify": "^4.0.1",
    +        "rimraf": "^2.6.3"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/delayed-stream": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
    +      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
    +      "engines": {
    +        "node": ">=0.4.0"
    +      }
    +    },
    +    "node_modules/depd": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
    +      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/dequal": {
    +      "version": "2.0.3",
    +      "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
    +      "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/destroy": {
    +      "version": "1.2.0",
    +      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
    +      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8",
    +        "npm": "1.2.8000 || >= 1.4.16"
    +      }
    +    },
    +    "node_modules/detect-libc": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
    +      "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/detect-newline": {
    +      "version": "3.1.0",
    +      "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
    +      "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/detect-node": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
    +      "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
    +      "peer": true
    +    },
    +    "node_modules/detect-node-es": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
    +      "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
    +    },
    +    "node_modules/detect-port-alt": {
    +      "version": "1.1.6",
    +      "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz",
    +      "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "address": "^1.0.1",
    +        "debug": "^2.6.0"
    +      },
    +      "bin": {
    +        "detect": "bin/detect-port",
    +        "detect-port": "bin/detect-port"
    +      },
    +      "engines": {
    +        "node": ">= 4.2.1"
    +      }
    +    },
    +    "node_modules/detect-port-alt/node_modules/debug": {
    +      "version": "2.6.9",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
    +      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "2.0.0"
    +      }
    +    },
    +    "node_modules/detect-port-alt/node_modules/ms": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
    +      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
    +      "peer": true
    +    },
    +    "node_modules/diacritics": {
    +      "version": "1.3.0",
    +      "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz",
    +      "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA=="
    +    },
    +    "node_modules/diff-sequences": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
    +      "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.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==",
    +      "peer": true,
    +      "dependencies": {
    +        "path-type": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/dns-equal": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
    +      "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==",
    +      "peer": true
    +    },
    +    "node_modules/dns-packet": {
    +      "version": "5.6.0",
    +      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz",
    +      "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@leichtgewicht/ip-codec": "^2.0.1"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/doctrine": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
    +      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
    +      "peer": true,
    +      "dependencies": {
    +        "esutils": "^2.0.2"
    +      },
    +      "engines": {
    +        "node": ">=6.0.0"
    +      }
    +    },
    +    "node_modules/dom-converter": {
    +      "version": "0.2.0",
    +      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
    +      "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
    +      "peer": true,
    +      "dependencies": {
    +        "utila": "~0.4"
    +      }
    +    },
    +    "node_modules/dom-helpers": {
    +      "version": "5.2.1",
    +      "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
    +      "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.8.7",
    +        "csstype": "^3.0.2"
    +      }
    +    },
    +    "node_modules/dom-serializer": {
    +      "version": "1.4.1",
    +      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
    +      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
    +      "peer": true,
    +      "dependencies": {
    +        "domelementtype": "^2.0.1",
    +        "domhandler": "^4.2.0",
    +        "entities": "^2.0.0"
    +      },
    +      "funding": {
    +        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
    +      }
    +    },
    +    "node_modules/dom-serializer/node_modules/entities": {
    +      "version": "2.2.0",
    +      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
    +      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
    +      "peer": true,
    +      "funding": {
    +        "url": "https://github.com/fb55/entities?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==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/fb55"
    +        }
    +      ],
    +      "peer": true
    +    },
    +    "node_modules/domexception": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
    +      "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
    +      "peer": true,
    +      "dependencies": {
    +        "webidl-conversions": "^5.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/domexception/node_modules/webidl-conversions": {
    +      "version": "5.0.0",
    +      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
    +      "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/domhandler": {
    +      "version": "4.3.1",
    +      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
    +      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "domelementtype": "^2.2.0"
    +      },
    +      "engines": {
    +        "node": ">= 4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/fb55/domhandler?sponsor=1"
    +      }
    +    },
    +    "node_modules/domutils": {
    +      "version": "2.8.0",
    +      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
    +      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
    +      "peer": true,
    +      "dependencies": {
    +        "dom-serializer": "^1.0.1",
    +        "domelementtype": "^2.2.0",
    +        "domhandler": "^4.2.0"
    +      },
    +      "funding": {
    +        "url": "https://github.com/fb55/domutils?sponsor=1"
    +      }
    +    },
    +    "node_modules/dot-case": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
    +      "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
    +      "peer": true,
    +      "dependencies": {
    +        "no-case": "^3.0.4",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/dotenv": {
    +      "version": "8.6.0",
    +      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
    +      "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/dotenv-defaults": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz",
    +      "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==",
    +      "peer": true,
    +      "dependencies": {
    +        "dotenv": "^8.2.0"
    +      }
    +    },
    +    "node_modules/dotenv-webpack": {
    +      "version": "8.0.1",
    +      "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.0.1.tgz",
    +      "integrity": "sha512-CdrgfhZOnx4uB18SgaoP9XHRN2v48BbjuXQsZY5ixs5A8579NxQkmMxRtI7aTwSiSQcM2ao12Fdu+L3ZS3bG4w==",
    +      "peer": true,
    +      "dependencies": {
    +        "dotenv-defaults": "^2.0.2"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "peerDependencies": {
    +        "webpack": "^4 || ^5"
    +      }
    +    },
    +    "node_modules/duplexer": {
    +      "version": "0.1.2",
    +      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
    +      "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
    +      "peer": true
    +    },
    +    "node_modules/ee-first": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
    +      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
    +      "peer": true
    +    },
    +    "node_modules/electron-to-chromium": {
    +      "version": "1.4.468",
    +      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz",
    +      "integrity": "sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==",
    +      "peer": true
    +    },
    +    "node_modules/email-prop-type": {
    +      "version": "3.0.1",
    +      "resolved": "https://registry.npmjs.org/email-prop-type/-/email-prop-type-3.0.1.tgz",
    +      "integrity": "sha512-tONZGMEOOkadp5OBftuVXU8DsceWmINxYK+pqPFB4LT5ODjrPX/esel3WGqbV7d6in5/MnZE4n4QcqOr4gh7dg==",
    +      "dependencies": {
    +        "email-validator": "^2.0.4"
    +      }
    +    },
    +    "node_modules/email-validator": {
    +      "version": "2.0.4",
    +      "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz",
    +      "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==",
    +      "engines": {
    +        "node": ">4.0"
    +      }
    +    },
    +    "node_modules/emittery": {
    +      "version": "0.8.1",
    +      "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
    +      "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sindresorhus/emittery?sponsor=1"
    +      }
    +    },
    +    "node_modules/emoji-regex": {
    +      "version": "9.2.2",
    +      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
    +      "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
    +      "peer": true
    +    },
    +    "node_modules/emojis-list": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
    +      "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 4"
    +      }
    +    },
    +    "node_modules/encodeurl": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
    +      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/end-of-stream": {
    +      "version": "1.4.4",
    +      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
    +      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "once": "^1.4.0"
    +      }
    +    },
    +    "node_modules/enhanced-resolve": {
    +      "version": "5.15.0",
    +      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
    +      "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
    +      "peer": true,
    +      "dependencies": {
    +        "graceful-fs": "^4.2.4",
    +        "tapable": "^2.2.0"
    +      },
    +      "engines": {
    +        "node": ">=10.13.0"
    +      }
    +    },
    +    "node_modules/entities": {
    +      "version": "4.5.0",
    +      "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
    +      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.12"
    +      },
    +      "funding": {
    +        "url": "https://github.com/fb55/entities?sponsor=1"
    +      }
    +    },
    +    "node_modules/envinfo": {
    +      "version": "7.10.0",
    +      "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
    +      "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==",
    +      "peer": true,
    +      "bin": {
    +        "envinfo": "dist/cli.js"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-arrayish": "^0.2.1"
    +      }
    +    },
    +    "node_modules/error-stack-parser": {
    +      "version": "2.1.4",
    +      "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
    +      "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "stackframe": "^1.3.4"
    +      }
    +    },
    +    "node_modules/es-abstract": {
    +      "version": "1.22.1",
    +      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz",
    +      "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==",
    +      "peer": true,
    +      "dependencies": {
    +        "array-buffer-byte-length": "^1.0.0",
    +        "arraybuffer.prototype.slice": "^1.0.1",
    +        "available-typed-arrays": "^1.0.5",
    +        "call-bind": "^1.0.2",
    +        "es-set-tostringtag": "^2.0.1",
    +        "es-to-primitive": "^1.2.1",
    +        "function.prototype.name": "^1.1.5",
    +        "get-intrinsic": "^1.2.1",
    +        "get-symbol-description": "^1.0.0",
    +        "globalthis": "^1.0.3",
    +        "gopd": "^1.0.1",
    +        "has": "^1.0.3",
    +        "has-property-descriptors": "^1.0.0",
    +        "has-proto": "^1.0.1",
    +        "has-symbols": "^1.0.3",
    +        "internal-slot": "^1.0.5",
    +        "is-array-buffer": "^3.0.2",
    +        "is-callable": "^1.2.7",
    +        "is-negative-zero": "^2.0.2",
    +        "is-regex": "^1.1.4",
    +        "is-shared-array-buffer": "^1.0.2",
    +        "is-string": "^1.0.7",
    +        "is-typed-array": "^1.1.10",
    +        "is-weakref": "^1.0.2",
    +        "object-inspect": "^1.12.3",
    +        "object-keys": "^1.1.1",
    +        "object.assign": "^4.1.4",
    +        "regexp.prototype.flags": "^1.5.0",
    +        "safe-array-concat": "^1.0.0",
    +        "safe-regex-test": "^1.0.0",
    +        "string.prototype.trim": "^1.2.7",
    +        "string.prototype.trimend": "^1.0.6",
    +        "string.prototype.trimstart": "^1.0.6",
    +        "typed-array-buffer": "^1.0.0",
    +        "typed-array-byte-length": "^1.0.0",
    +        "typed-array-byte-offset": "^1.0.0",
    +        "typed-array-length": "^1.0.4",
    +        "unbox-primitive": "^1.0.2",
    +        "which-typed-array": "^1.1.10"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/es-module-lexer": {
    +      "version": "1.3.0",
    +      "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz",
    +      "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==",
    +      "peer": true
    +    },
    +    "node_modules/es-set-tostringtag": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
    +      "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
    +      "peer": true,
    +      "dependencies": {
    +        "get-intrinsic": "^1.1.3",
    +        "has": "^1.0.3",
    +        "has-tostringtag": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      }
    +    },
    +    "node_modules/es-shim-unscopables": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
    +      "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
    +      "peer": true,
    +      "dependencies": {
    +        "has": "^1.0.3"
    +      }
    +    },
    +    "node_modules/es-to-primitive": {
    +      "version": "1.2.1",
    +      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
    +      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-callable": "^1.1.4",
    +        "is-date-object": "^1.0.1",
    +        "is-symbol": "^1.0.2"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/escalade": {
    +      "version": "3.1.1",
    +      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
    +      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/escape-html": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
    +      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
    +      "peer": true
    +    },
    +    "node_modules/escape-string-regexp": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
    +      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/escodegen": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
    +      "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
    +      "peer": true,
    +      "dependencies": {
    +        "esprima": "^4.0.1",
    +        "estraverse": "^5.2.0",
    +        "esutils": "^2.0.2"
    +      },
    +      "bin": {
    +        "escodegen": "bin/escodegen.js",
    +        "esgenerate": "bin/esgenerate.js"
    +      },
    +      "engines": {
    +        "node": ">=6.0"
    +      },
    +      "optionalDependencies": {
    +        "source-map": "~0.6.1"
    +      }
    +    },
    +    "node_modules/escodegen/node_modules/source-map": {
    +      "version": "0.6.1",
    +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    +      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
    +      "optional": true,
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/eslint": {
    +      "version": "8.44.0",
    +      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz",
    +      "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==",
    +      "peer": true,
    +      "dependencies": {
    +        "@eslint-community/eslint-utils": "^4.2.0",
    +        "@eslint-community/regexpp": "^4.4.0",
    +        "@eslint/eslintrc": "^2.1.0",
    +        "@eslint/js": "8.44.0",
    +        "@humanwhocodes/config-array": "^0.11.10",
    +        "@humanwhocodes/module-importer": "^1.0.1",
    +        "@nodelib/fs.walk": "^1.2.8",
    +        "ajv": "^6.10.0",
    +        "chalk": "^4.0.0",
    +        "cross-spawn": "^7.0.2",
    +        "debug": "^4.3.2",
    +        "doctrine": "^3.0.0",
    +        "escape-string-regexp": "^4.0.0",
    +        "eslint-scope": "^7.2.0",
    +        "eslint-visitor-keys": "^3.4.1",
    +        "espree": "^9.6.0",
    +        "esquery": "^1.4.2",
    +        "esutils": "^2.0.2",
    +        "fast-deep-equal": "^3.1.3",
    +        "file-entry-cache": "^6.0.1",
    +        "find-up": "^5.0.0",
    +        "glob-parent": "^6.0.2",
    +        "globals": "^13.19.0",
    +        "graphemer": "^1.4.0",
    +        "ignore": "^5.2.0",
    +        "import-fresh": "^3.0.0",
    +        "imurmurhash": "^0.1.4",
    +        "is-glob": "^4.0.0",
    +        "is-path-inside": "^3.0.3",
    +        "js-yaml": "^4.1.0",
    +        "json-stable-stringify-without-jsonify": "^1.0.1",
    +        "levn": "^0.4.1",
    +        "lodash.merge": "^4.6.2",
    +        "minimatch": "^3.1.2",
    +        "natural-compare": "^1.4.0",
    +        "optionator": "^0.9.3",
    +        "strip-ansi": "^6.0.1",
    +        "strip-json-comments": "^3.1.0",
    +        "text-table": "^0.2.0"
    +      },
    +      "bin": {
    +        "eslint": "bin/eslint.js"
    +      },
    +      "engines": {
    +        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
    +      },
    +      "funding": {
    +        "url": "https://opencollective.com/eslint"
    +      }
    +    },
    +    "node_modules/eslint-config-airbnb": {
    +      "version": "19.0.4",
    +      "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz",
    +      "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==",
    +      "peer": true,
    +      "dependencies": {
    +        "eslint-config-airbnb-base": "^15.0.0",
    +        "object.assign": "^4.1.2",
    +        "object.entries": "^1.1.5"
    +      },
    +      "engines": {
    +        "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0"
    +      },
    +      "peerDependencies": {
    +        "eslint": "^7.32.0 || ^8.2.0",
    +        "eslint-plugin-import": "^2.25.3",
    +        "eslint-plugin-jsx-a11y": "^6.5.1",
    +        "eslint-plugin-react": "^7.28.0",
    +        "eslint-plugin-react-hooks": "^4.3.0"
    +      }
    +    },
    +    "node_modules/eslint-config-airbnb-base": {
    +      "version": "15.0.0",
    +      "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz",
    +      "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==",
    +      "peer": true,
    +      "dependencies": {
    +        "confusing-browser-globals": "^1.0.10",
    +        "object.assign": "^4.1.2",
    +        "object.entries": "^1.1.5",
    +        "semver": "^6.3.0"
    +      },
    +      "engines": {
    +        "node": "^10.12.0 || >=12.0.0"
    +      },
    +      "peerDependencies": {
    +        "eslint": "^7.32.0 || ^8.2.0",
    +        "eslint-plugin-import": "^2.25.2"
    +      }
    +    },
    +    "node_modules/eslint-import-resolver-node": {
    +      "version": "0.3.7",
    +      "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz",
    +      "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==",
    +      "peer": true,
    +      "dependencies": {
    +        "debug": "^3.2.7",
    +        "is-core-module": "^2.11.0",
    +        "resolve": "^1.22.1"
    +      }
    +    },
    +    "node_modules/eslint-import-resolver-node/node_modules/debug": {
    +      "version": "3.2.7",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
    +      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "^2.1.1"
    +      }
    +    },
    +    "node_modules/eslint-module-utils": {
    +      "version": "2.8.0",
    +      "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
    +      "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
    +      "peer": true,
    +      "dependencies": {
    +        "debug": "^3.2.7"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      },
    +      "peerDependenciesMeta": {
    +        "eslint": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/eslint-module-utils/node_modules/debug": {
    +      "version": "3.2.7",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
    +      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "^2.1.1"
    +      }
    +    },
    +    "node_modules/eslint-plugin-import": {
    +      "version": "2.27.5",
    +      "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz",
    +      "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==",
    +      "peer": true,
    +      "dependencies": {
    +        "array-includes": "^3.1.6",
    +        "array.prototype.flat": "^1.3.1",
    +        "array.prototype.flatmap": "^1.3.1",
    +        "debug": "^3.2.7",
    +        "doctrine": "^2.1.0",
    +        "eslint-import-resolver-node": "^0.3.7",
    +        "eslint-module-utils": "^2.7.4",
    +        "has": "^1.0.3",
    +        "is-core-module": "^2.11.0",
    +        "is-glob": "^4.0.3",
    +        "minimatch": "^3.1.2",
    +        "object.values": "^1.1.6",
    +        "resolve": "^1.22.1",
    +        "semver": "^6.3.0",
    +        "tsconfig-paths": "^3.14.1"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      },
    +      "peerDependencies": {
    +        "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
    +      }
    +    },
    +    "node_modules/eslint-plugin-import/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/eslint-plugin-import/node_modules/debug": {
    +      "version": "3.2.7",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
    +      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "^2.1.1"
    +      }
    +    },
    +    "node_modules/eslint-plugin-import/node_modules/doctrine": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
    +      "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
    +      "peer": true,
    +      "dependencies": {
    +        "esutils": "^2.0.2"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/eslint-plugin-import/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/eslint-plugin-jsx-a11y": {
    +      "version": "6.7.1",
    +      "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz",
    +      "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/runtime": "^7.20.7",
    +        "aria-query": "^5.1.3",
    +        "array-includes": "^3.1.6",
    +        "array.prototype.flatmap": "^1.3.1",
    +        "ast-types-flow": "^0.0.7",
    +        "axe-core": "^4.6.2",
    +        "axobject-query": "^3.1.1",
    +        "damerau-levenshtein": "^1.0.8",
    +        "emoji-regex": "^9.2.2",
    +        "has": "^1.0.3",
    +        "jsx-ast-utils": "^3.3.3",
    +        "language-tags": "=1.0.5",
    +        "minimatch": "^3.1.2",
    +        "object.entries": "^1.1.6",
    +        "object.fromentries": "^2.0.6",
    +        "semver": "^6.3.0"
    +      },
    +      "engines": {
    +        "node": ">=4.0"
    +      },
    +      "peerDependencies": {
    +        "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
    +      }
    +    },
    +    "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/eslint-plugin-react": {
    +      "version": "7.32.2",
    +      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz",
    +      "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==",
    +      "peer": true,
    +      "dependencies": {
    +        "array-includes": "^3.1.6",
    +        "array.prototype.flatmap": "^1.3.1",
    +        "array.prototype.tosorted": "^1.1.1",
    +        "doctrine": "^2.1.0",
    +        "estraverse": "^5.3.0",
    +        "jsx-ast-utils": "^2.4.1 || ^3.0.0",
    +        "minimatch": "^3.1.2",
    +        "object.entries": "^1.1.6",
    +        "object.fromentries": "^2.0.6",
    +        "object.hasown": "^1.1.2",
    +        "object.values": "^1.1.6",
    +        "prop-types": "^15.8.1",
    +        "resolve": "^2.0.0-next.4",
    +        "semver": "^6.3.0",
    +        "string.prototype.matchall": "^4.0.8"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      },
    +      "peerDependencies": {
    +        "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
    +      }
    +    },
    +    "node_modules/eslint-plugin-react-hooks": {
    +      "version": "4.6.0",
    +      "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
    +      "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "peerDependencies": {
    +        "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
    +      }
    +    },
    +    "node_modules/eslint-plugin-react/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/eslint-plugin-react/node_modules/doctrine": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
    +      "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
    +      "peer": true,
    +      "dependencies": {
    +        "esutils": "^2.0.2"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/eslint-plugin-react/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/eslint-plugin-react/node_modules/resolve": {
    +      "version": "2.0.0-next.4",
    +      "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz",
    +      "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-core-module": "^2.9.0",
    +        "path-parse": "^1.0.7",
    +        "supports-preserve-symlinks-flag": "^1.0.0"
    +      },
    +      "bin": {
    +        "resolve": "bin/resolve"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/eslint-scope": {
    +      "version": "5.1.1",
    +      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
    +      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
    +      "peer": true,
    +      "dependencies": {
    +        "esrecurse": "^4.3.0",
    +        "estraverse": "^4.1.1"
    +      },
    +      "engines": {
    +        "node": ">=8.0.0"
    +      }
    +    },
    +    "node_modules/eslint-scope/node_modules/estraverse": {
    +      "version": "4.3.0",
    +      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
    +      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4.0"
    +      }
    +    },
    +    "node_modules/eslint-visitor-keys": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
    +      "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/eslint/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==",
    +      "peer": true
    +    },
    +    "node_modules/eslint/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/eslint/node_modules/eslint-scope": {
    +      "version": "7.2.1",
    +      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz",
    +      "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==",
    +      "peer": true,
    +      "dependencies": {
    +        "esrecurse": "^4.3.0",
    +        "estraverse": "^5.2.0"
    +      },
    +      "engines": {
    +        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
    +      },
    +      "funding": {
    +        "url": "https://opencollective.com/eslint"
    +      }
    +    },
    +    "node_modules/eslint/node_modules/eslint-visitor-keys": {
    +      "version": "3.4.1",
    +      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
    +      "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
    +      },
    +      "funding": {
    +        "url": "https://opencollective.com/eslint"
    +      }
    +    },
    +    "node_modules/eslint/node_modules/glob-parent": {
    +      "version": "6.0.2",
    +      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
    +      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-glob": "^4.0.3"
    +      },
    +      "engines": {
    +        "node": ">=10.13.0"
    +      }
    +    },
    +    "node_modules/eslint/node_modules/globals": {
    +      "version": "13.20.0",
    +      "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
    +      "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "type-fest": "^0.20.2"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/eslint/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==",
    +      "peer": true,
    +      "dependencies": {
    +        "argparse": "^2.0.1"
    +      },
    +      "bin": {
    +        "js-yaml": "bin/js-yaml.js"
    +      }
    +    },
    +    "node_modules/eslint/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/eslint/node_modules/type-fest": {
    +      "version": "0.20.2",
    +      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
    +      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/espree": {
    +      "version": "9.6.1",
    +      "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
    +      "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "acorn": "^8.9.0",
    +        "acorn-jsx": "^5.3.2",
    +        "eslint-visitor-keys": "^3.4.1"
    +      },
    +      "engines": {
    +        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
    +      },
    +      "funding": {
    +        "url": "https://opencollective.com/eslint"
    +      }
    +    },
    +    "node_modules/espree/node_modules/eslint-visitor-keys": {
    +      "version": "3.4.1",
    +      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
    +      "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
    +      },
    +      "funding": {
    +        "url": "https://opencollective.com/eslint"
    +      }
    +    },
    +    "node_modules/esprima": {
    +      "version": "4.0.1",
    +      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
    +      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
    +      "peer": true,
    +      "bin": {
    +        "esparse": "bin/esparse.js",
    +        "esvalidate": "bin/esvalidate.js"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/esquery": {
    +      "version": "1.5.0",
    +      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
    +      "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
    +      "peer": true,
    +      "dependencies": {
    +        "estraverse": "^5.1.0"
    +      },
    +      "engines": {
    +        "node": ">=0.10"
    +      }
    +    },
    +    "node_modules/esrecurse": {
    +      "version": "4.3.0",
    +      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
    +      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
    +      "peer": true,
    +      "dependencies": {
    +        "estraverse": "^5.2.0"
    +      },
    +      "engines": {
    +        "node": ">=4.0"
    +      }
    +    },
    +    "node_modules/estraverse": {
    +      "version": "5.3.0",
    +      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
    +      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4.0"
    +      }
    +    },
    +    "node_modules/esutils": {
    +      "version": "2.0.3",
    +      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
    +      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/etag": {
    +      "version": "1.8.1",
    +      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
    +      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/eventemitter3": {
    +      "version": "4.0.7",
    +      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
    +      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
    +      "peer": true
    +    },
    +    "node_modules/events": {
    +      "version": "3.3.0",
    +      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
    +      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.8.x"
    +      }
    +    },
    +    "node_modules/execa": {
    +      "version": "5.1.1",
    +      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
    +      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
    +      "peer": true,
    +      "dependencies": {
    +        "cross-spawn": "^7.0.3",
    +        "get-stream": "^6.0.0",
    +        "human-signals": "^2.1.0",
    +        "is-stream": "^2.0.0",
    +        "merge-stream": "^2.0.0",
    +        "npm-run-path": "^4.0.1",
    +        "onetime": "^5.1.2",
    +        "signal-exit": "^3.0.3",
    +        "strip-final-newline": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sindresorhus/execa?sponsor=1"
    +      }
    +    },
    +    "node_modules/exit": {
    +      "version": "0.1.2",
    +      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
    +      "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8.0"
    +      }
    +    },
    +    "node_modules/expand-template": {
    +      "version": "2.0.3",
    +      "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
    +      "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/expect": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
    +      "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/types": "^27.5.1",
    +        "jest-get-type": "^27.5.1",
    +        "jest-matcher-utils": "^27.5.1",
    +        "jest-message-util": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/express": {
    +      "version": "4.18.2",
    +      "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
    +      "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "accepts": "~1.3.8",
    +        "array-flatten": "1.1.1",
    +        "body-parser": "1.20.1",
    +        "content-disposition": "0.5.4",
    +        "content-type": "~1.0.4",
    +        "cookie": "0.5.0",
    +        "cookie-signature": "1.0.6",
    +        "debug": "2.6.9",
    +        "depd": "2.0.0",
    +        "encodeurl": "~1.0.2",
    +        "escape-html": "~1.0.3",
    +        "etag": "~1.8.1",
    +        "finalhandler": "1.2.0",
    +        "fresh": "0.5.2",
    +        "http-errors": "2.0.0",
    +        "merge-descriptors": "1.0.1",
    +        "methods": "~1.1.2",
    +        "on-finished": "2.4.1",
    +        "parseurl": "~1.3.3",
    +        "path-to-regexp": "0.1.7",
    +        "proxy-addr": "~2.0.7",
    +        "qs": "6.11.0",
    +        "range-parser": "~1.2.1",
    +        "safe-buffer": "5.2.1",
    +        "send": "0.18.0",
    +        "serve-static": "1.15.0",
    +        "setprototypeof": "1.2.0",
    +        "statuses": "2.0.1",
    +        "type-is": "~1.6.18",
    +        "utils-merge": "1.0.1",
    +        "vary": "~1.1.2"
    +      },
    +      "engines": {
    +        "node": ">= 0.10.0"
    +      }
    +    },
    +    "node_modules/express/node_modules/cookie": {
    +      "version": "0.5.0",
    +      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
    +      "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/express/node_modules/debug": {
    +      "version": "2.6.9",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
    +      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "2.0.0"
    +      }
    +    },
    +    "node_modules/express/node_modules/ms": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
    +      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
    +      "peer": true
    +    },
    +    "node_modules/express/node_modules/path-to-regexp": {
    +      "version": "0.1.7",
    +      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
    +      "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
    +      "peer": true
    +    },
    +    "node_modules/extend": {
    +      "version": "3.0.2",
    +      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
    +      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
    +      "peer": true
    +    },
    +    "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==",
    +      "peer": true
    +    },
    +    "node_modules/fast-defer": {
    +      "version": "1.1.7",
    +      "resolved": "https://registry.npmjs.org/fast-defer/-/fast-defer-1.1.7.tgz",
    +      "integrity": "sha512-tJ01ulDWT2WhqxMKS20nXX6wyX2iInBYpbN3GO7yjKwXMY4qvkdBRxak9IFwBLlFDESox+SwSvqMCZDfe1tqeg=="
    +    },
    +    "node_modules/fast-fifo": {
    +      "version": "1.3.0",
    +      "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.0.tgz",
    +      "integrity": "sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==",
    +      "peer": true
    +    },
    +    "node_modules/fast-glob": {
    +      "version": "3.3.1",
    +      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
    +      "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
    +      "peer": true,
    +      "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.4"
    +      },
    +      "engines": {
    +        "node": ">=8.6.0"
    +      }
    +    },
    +    "node_modules/fast-json-stable-stringify": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
    +      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
    +      "peer": true
    +    },
    +    "node_modules/fast-levenshtein": {
    +      "version": "2.0.6",
    +      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
    +      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
    +      "peer": true
    +    },
    +    "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 4.9.1"
    +      }
    +    },
    +    "node_modules/fastq": {
    +      "version": "1.15.0",
    +      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
    +      "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
    +      "peer": true,
    +      "dependencies": {
    +        "reusify": "^1.0.4"
    +      }
    +    },
    +    "node_modules/faye-websocket": {
    +      "version": "0.11.4",
    +      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
    +      "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
    +      "peer": true,
    +      "dependencies": {
    +        "websocket-driver": ">=0.5.1"
    +      },
    +      "engines": {
    +        "node": ">=0.8.0"
    +      }
    +    },
    +    "node_modules/fb-watchman": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
    +      "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
    +      "peer": true,
    +      "dependencies": {
    +        "bser": "2.1.1"
    +      }
    +    },
    +    "node_modules/file-entry-cache": {
    +      "version": "6.0.1",
    +      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
    +      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
    +      "peer": true,
    +      "dependencies": {
    +        "flat-cache": "^3.0.4"
    +      },
    +      "engines": {
    +        "node": "^10.12.0 || >=12.0.0"
    +      }
    +    },
    +    "node_modules/file-loader": {
    +      "version": "6.2.0",
    +      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
    +      "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
    +      "peer": true,
    +      "dependencies": {
    +        "loader-utils": "^2.0.0",
    +        "schema-utils": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 10.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "webpack": "^4.0.0 || ^5.0.0"
    +      }
    +    },
    +    "node_modules/file-selector": {
    +      "version": "0.6.0",
    +      "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz",
    +      "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==",
    +      "dependencies": {
    +        "tslib": "^2.4.0"
    +      },
    +      "engines": {
    +        "node": ">= 12"
    +      }
    +    },
    +    "node_modules/filesize": {
    +      "version": "8.0.7",
    +      "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz",
    +      "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.4.0"
    +      }
    +    },
    +    "node_modules/fill-range": {
    +      "version": "7.0.1",
    +      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
    +      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "to-regex-range": "^5.0.1"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/filter-obj": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
    +      "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==",
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/finalhandler": {
    +      "version": "1.2.0",
    +      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
    +      "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
    +      "peer": true,
    +      "dependencies": {
    +        "debug": "2.6.9",
    +        "encodeurl": "~1.0.2",
    +        "escape-html": "~1.0.3",
    +        "on-finished": "2.4.1",
    +        "parseurl": "~1.3.3",
    +        "statuses": "2.0.1",
    +        "unpipe": "~1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/finalhandler/node_modules/debug": {
    +      "version": "2.6.9",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
    +      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "2.0.0"
    +      }
    +    },
    +    "node_modules/finalhandler/node_modules/ms": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
    +      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
    +      "peer": true
    +    },
    +    "node_modules/find-cache-dir": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz",
    +      "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==",
    +      "peer": true,
    +      "dependencies": {
    +        "common-path-prefix": "^3.0.0",
    +        "pkg-dir": "^7.0.0"
    +      },
    +      "engines": {
    +        "node": ">=14.16"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/find-up": {
    +      "version": "5.0.0",
    +      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
    +      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
    +      "peer": true,
    +      "dependencies": {
    +        "locate-path": "^6.0.0",
    +        "path-exists": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/flat-cache": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
    +      "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
    +      "peer": true,
    +      "dependencies": {
    +        "flatted": "^3.1.0",
    +        "rimraf": "^3.0.2"
    +      },
    +      "engines": {
    +        "node": "^10.12.0 || >=12.0.0"
    +      }
    +    },
    +    "node_modules/flat-cache/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/flat-cache/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/flat-cache/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/flat-cache/node_modules/rimraf": {
    +      "version": "3.0.2",
    +      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
    +      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
    +      "peer": true,
    +      "dependencies": {
    +        "glob": "^7.1.3"
    +      },
    +      "bin": {
    +        "rimraf": "bin.js"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/flatted": {
    +      "version": "3.2.7",
    +      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
    +      "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
    +      "peer": true
    +    },
    +    "node_modules/focus-lock": {
    +      "version": "0.11.6",
    +      "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-0.11.6.tgz",
    +      "integrity": "sha512-KSuV3ur4gf2KqMNoZx3nXNVhqCkn42GuTYCX4tXPEwf0MjpFQmNMiN6m7dXaUXgIoivL6/65agoUMg4RLS0Vbg==",
    +      "dependencies": {
    +        "tslib": "^2.0.3"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/follow-redirects": {
    +      "version": "1.15.2",
    +      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
    +      "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
    +      "funding": [
    +        {
    +          "type": "individual",
    +          "url": "https://github.com/sponsors/RubenVerborgh"
    +        }
    +      ],
    +      "engines": {
    +        "node": ">=4.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "debug": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/font-awesome": {
    +      "version": "4.7.0",
    +      "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
    +      "integrity": "sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==",
    +      "engines": {
    +        "node": ">=0.10.3"
    +      }
    +    },
    +    "node_modules/for-each": {
    +      "version": "0.3.3",
    +      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
    +      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-callable": "^1.1.3"
    +      }
    +    },
    +    "node_modules/fork-ts-checker-webpack-plugin": {
    +      "version": "6.5.3",
    +      "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz",
    +      "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/code-frame": "^7.8.3",
    +        "@types/json-schema": "^7.0.5",
    +        "chalk": "^4.1.0",
    +        "chokidar": "^3.4.2",
    +        "cosmiconfig": "^6.0.0",
    +        "deepmerge": "^4.2.2",
    +        "fs-extra": "^9.0.0",
    +        "glob": "^7.1.6",
    +        "memfs": "^3.1.2",
    +        "minimatch": "^3.0.4",
    +        "schema-utils": "2.7.0",
    +        "semver": "^7.3.2",
    +        "tapable": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10",
    +        "yarn": ">=1.0.0"
    +      },
    +      "peerDependencies": {
    +        "eslint": ">= 6",
    +        "typescript": ">= 2.7",
    +        "vue-template-compiler": "*",
    +        "webpack": ">= 4"
    +      },
    +      "peerDependenciesMeta": {
    +        "eslint": {
    +          "optional": true
    +        },
    +        "vue-template-compiler": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
    +      "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/parse-json": "^4.0.0",
    +        "import-fresh": "^3.1.0",
    +        "parse-json": "^5.0.0",
    +        "path-type": "^4.0.0",
    +        "yaml": "^1.7.2"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/fork-ts-checker-webpack-plugin/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
    +      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "yallist": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": {
    +      "version": "2.7.0",
    +      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
    +      "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/json-schema": "^7.0.4",
    +        "ajv": "^6.12.2",
    +        "ajv-keywords": "^3.4.1"
    +      },
    +      "engines": {
    +        "node": ">= 8.9.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      }
    +    },
    +    "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": {
    +      "version": "7.5.4",
    +      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
    +      "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
    +      "peer": true,
    +      "dependencies": {
    +        "lru-cache": "^6.0.0"
    +      },
    +      "bin": {
    +        "semver": "bin/semver.js"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": {
    +      "version": "1.1.3",
    +      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
    +      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
    +      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
    +      "peer": true
    +    },
    +    "node_modules/form-data": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
    +      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
    +      "dependencies": {
    +        "asynckit": "^0.4.0",
    +        "combined-stream": "^1.0.8",
    +        "mime-types": "^2.1.12"
    +      },
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/form-urlencoded": {
    +      "version": "4.1.4",
    +      "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-4.1.4.tgz",
    +      "integrity": "sha512-R7Vytos0gMYuPQTMwnNzvK9PBItNV+Qkm/pvghEZI3j2kMrzZmJlczAgHFmt12VV+IRYQXgTlSGP1PKAsMCIUA=="
    +    },
    +    "node_modules/formidable": {
    +      "version": "1.2.6",
    +      "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz",
    +      "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==",
    +      "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau",
    +      "peer": true,
    +      "funding": {
    +        "url": "https://ko-fi.com/tunnckoCore/commissions"
    +      }
    +    },
    +    "node_modules/forwarded": {
    +      "version": "0.2.0",
    +      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
    +      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/fraction.js": {
    +      "version": "4.2.0",
    +      "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
    +      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
    +      "peer": true,
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "type": "patreon",
    +        "url": "https://www.patreon.com/infusion"
    +      }
    +    },
    +    "node_modules/fresh": {
    +      "version": "0.5.2",
    +      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
    +      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/fs-constants": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
    +      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
    +      "peer": true
    +    },
    +    "node_modules/fs-extra": {
    +      "version": "9.1.0",
    +      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
    +      "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "at-least-node": "^1.0.0",
    +        "graceful-fs": "^4.2.0",
    +        "jsonfile": "^6.0.1",
    +        "universalify": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/fs-monkey": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz",
    +      "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==",
    +      "peer": true
    +    },
    +    "node_modules/fs-readdir-recursive": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
    +      "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==",
    +      "peer": true
    +    },
    +    "node_modules/fs.realpath": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
    +      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
    +    },
    +    "node_modules/fsevents": {
    +      "version": "2.3.2",
    +      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
    +      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
    +      "hasInstallScript": true,
    +      "optional": true,
    +      "os": [
    +        "darwin"
    +      ],
    +      "peer": true,
    +      "engines": {
    +        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
    +      }
    +    },
    +    "node_modules/function-bind": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
    +      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
    +      "peer": true
    +    },
    +    "node_modules/function.prototype.name": {
    +      "version": "1.1.5",
    +      "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
    +      "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.3",
    +        "es-abstract": "^1.19.0",
    +        "functions-have-names": "^1.2.2"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/functions-have-names": {
    +      "version": "1.2.3",
    +      "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
    +      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
    +      "peer": true,
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/gensync": {
    +      "version": "1.0.0-beta.2",
    +      "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
    +      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6.9.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==",
    +      "peer": true,
    +      "engines": {
    +        "node": "6.* || 8.* || >= 10.*"
    +      }
    +    },
    +    "node_modules/get-intrinsic": {
    +      "version": "1.2.1",
    +      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
    +      "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
    +      "peer": true,
    +      "dependencies": {
    +        "function-bind": "^1.1.1",
    +        "has": "^1.0.3",
    +        "has-proto": "^1.0.1",
    +        "has-symbols": "^1.0.3"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/get-nonce": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
    +      "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/get-package-type": {
    +      "version": "0.1.0",
    +      "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
    +      "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8.0.0"
    +      }
    +    },
    +    "node_modules/get-stream": {
    +      "version": "6.0.1",
    +      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
    +      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/get-symbol-description": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
    +      "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "get-intrinsic": "^1.1.1"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/github-from-package": {
    +      "version": "0.0.0",
    +      "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
    +      "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
    +      "peer": true
    +    },
    +    "node_modules/glob": {
    +      "version": "8.1.0",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
    +      "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^5.0.1",
    +        "once": "^1.3.0"
    +      },
    +      "engines": {
    +        "node": ">=12"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-glob": "^4.0.1"
    +      },
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/glob-to-regexp": {
    +      "version": "0.4.1",
    +      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
    +      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
    +      "peer": true
    +    },
    +    "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==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "ini": "^1.3.5",
    +        "kind-of": "^6.0.2",
    +        "which": "^1.3.1"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/global-prefix/node_modules/which": {
    +      "version": "1.3.1",
    +      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
    +      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "isexe": "^2.0.0"
    +      },
    +      "bin": {
    +        "which": "bin/which"
    +      }
    +    },
    +    "node_modules/globals": {
    +      "version": "11.12.0",
    +      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
    +      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/globalthis": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
    +      "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
    +      "peer": true,
    +      "dependencies": {
    +        "define-properties": "^1.1.3"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/globby": {
    +      "version": "6.1.0",
    +      "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
    +      "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
    +      "peer": true,
    +      "dependencies": {
    +        "array-union": "^1.0.1",
    +        "glob": "^7.0.3",
    +        "object-assign": "^4.0.1",
    +        "pify": "^2.0.0",
    +        "pinkie-promise": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/globby/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/globby/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/globby/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/globby/node_modules/pify": {
    +      "version": "2.3.0",
    +      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
    +      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/gopd": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
    +      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
    +      "peer": true,
    +      "dependencies": {
    +        "get-intrinsic": "^1.1.3"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "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==",
    +      "peer": true
    +    },
    +    "node_modules/graphemer": {
    +      "version": "1.4.0",
    +      "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
    +      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
    +      "peer": true
    +    },
    +    "node_modules/gzip-size": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
    +      "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "duplexer": "^0.1.2"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/handle-thing": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
    +      "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
    +      "peer": true
    +    },
    +    "node_modules/harmony-reflect": {
    +      "version": "1.6.2",
    +      "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz",
    +      "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==",
    +      "peer": true
    +    },
    +    "node_modules/has": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
    +      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
    +      "peer": true,
    +      "dependencies": {
    +        "function-bind": "^1.1.1"
    +      },
    +      "engines": {
    +        "node": ">= 0.4.0"
    +      }
    +    },
    +    "node_modules/has-bigints": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
    +      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
    +      "peer": true,
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/has-property-descriptors": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
    +      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "get-intrinsic": "^1.1.1"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/has-proto": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
    +      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/has-symbols": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
    +      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/has-tostringtag": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
    +      "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "has-symbols": "^1.0.2"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/he": {
    +      "version": "1.2.0",
    +      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
    +      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
    +      "peer": true,
    +      "bin": {
    +        "he": "bin/he"
    +      }
    +    },
    +    "node_modules/history": {
    +      "version": "4.10.1",
    +      "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
    +      "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.1.2",
    +        "loose-envify": "^1.2.0",
    +        "resolve-pathname": "^3.0.0",
    +        "tiny-invariant": "^1.0.2",
    +        "tiny-warning": "^1.0.0",
    +        "value-equal": "^1.0.1"
    +      }
    +    },
    +    "node_modules/hoist-non-react-statics": {
    +      "version": "3.3.2",
    +      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
    +      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
    +      "dependencies": {
    +        "react-is": "^16.7.0"
    +      }
    +    },
    +    "node_modules/hpack.js": {
    +      "version": "2.1.6",
    +      "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
    +      "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "inherits": "^2.0.1",
    +        "obuf": "^1.0.0",
    +        "readable-stream": "^2.0.1",
    +        "wbuf": "^1.1.0"
    +      }
    +    },
    +    "node_modules/html-encoding-sniffer": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
    +      "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "whatwg-encoding": "^1.0.5"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/html-entities": {
    +      "version": "2.4.0",
    +      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz",
    +      "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/mdevils"
    +        },
    +        {
    +          "type": "patreon",
    +          "url": "https://patreon.com/mdevils"
    +        }
    +      ],
    +      "peer": true
    +    },
    +    "node_modules/html-escaper": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
    +      "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
    +      "peer": true
    +    },
    +    "node_modules/html-minifier-terser": {
    +      "version": "6.1.0",
    +      "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
    +      "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
    +      "peer": true,
    +      "dependencies": {
    +        "camel-case": "^4.1.2",
    +        "clean-css": "^5.2.2",
    +        "commander": "^8.3.0",
    +        "he": "^1.2.0",
    +        "param-case": "^3.0.4",
    +        "relateurl": "^0.2.7",
    +        "terser": "^5.10.0"
    +      },
    +      "bin": {
    +        "html-minifier-terser": "cli.js"
    +      },
    +      "engines": {
    +        "node": ">=12"
    +      }
    +    },
    +    "node_modules/html-minifier-terser/node_modules/commander": {
    +      "version": "8.3.0",
    +      "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
    +      "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 12"
    +      }
    +    },
    +    "node_modules/html-webpack-plugin": {
    +      "version": "5.5.3",
    +      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz",
    +      "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/html-minifier-terser": "^6.0.0",
    +        "html-minifier-terser": "^6.0.2",
    +        "lodash": "^4.17.21",
    +        "pretty-error": "^4.0.0",
    +        "tapable": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/html-webpack-plugin"
    +      },
    +      "peerDependencies": {
    +        "webpack": "^5.20.0"
    +      }
    +    },
    +    "node_modules/htmlparser2": {
    +      "version": "6.1.0",
    +      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
    +      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
    +      "funding": [
    +        "https://github.com/fb55/htmlparser2?sponsor=1",
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/fb55"
    +        }
    +      ],
    +      "peer": true,
    +      "dependencies": {
    +        "domelementtype": "^2.0.1",
    +        "domhandler": "^4.0.0",
    +        "domutils": "^2.5.2",
    +        "entities": "^2.0.0"
    +      }
    +    },
    +    "node_modules/htmlparser2/node_modules/entities": {
    +      "version": "2.2.0",
    +      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
    +      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
    +      "peer": true,
    +      "funding": {
    +        "url": "https://github.com/fb55/entities?sponsor=1"
    +      }
    +    },
    +    "node_modules/http-deceiver": {
    +      "version": "1.2.7",
    +      "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
    +      "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
    +      "peer": true
    +    },
    +    "node_modules/http-errors": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
    +      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "depd": "2.0.0",
    +        "inherits": "2.0.4",
    +        "setprototypeof": "1.2.0",
    +        "statuses": "2.0.1",
    +        "toidentifier": "1.0.1"
    +      },
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/http-parser-js": {
    +      "version": "0.5.8",
    +      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
    +      "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
    +      "peer": true
    +    },
    +    "node_modules/http-proxy": {
    +      "version": "1.18.1",
    +      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
    +      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "eventemitter3": "^4.0.0",
    +        "follow-redirects": "^1.0.0",
    +        "requires-port": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8.0.0"
    +      }
    +    },
    +    "node_modules/http-proxy-agent": {
    +      "version": "4.0.1",
    +      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
    +      "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@tootallnate/once": "1",
    +        "agent-base": "6",
    +        "debug": "4"
    +      },
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/http-proxy-middleware": {
    +      "version": "2.0.6",
    +      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
    +      "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/http-proxy": "^1.17.8",
    +        "http-proxy": "^1.18.1",
    +        "is-glob": "^4.0.1",
    +        "is-plain-obj": "^3.0.0",
    +        "micromatch": "^4.0.2"
    +      },
    +      "engines": {
    +        "node": ">=12.0.0"
    +      },
    +      "peerDependencies": {
    +        "@types/express": "^4.17.13"
    +      },
    +      "peerDependenciesMeta": {
    +        "@types/express": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/https-proxy-agent": {
    +      "version": "5.0.1",
    +      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
    +      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
    +      "peer": true,
    +      "dependencies": {
    +        "agent-base": "6",
    +        "debug": "4"
    +      },
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/human-signals": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
    +      "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10.17.0"
    +      }
    +    },
    +    "node_modules/hyphenate-style-name": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz",
    +      "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ=="
    +    },
    +    "node_modules/i18n-iso-countries": {
    +      "version": "4.3.1",
    +      "resolved": "https://registry.npmjs.org/i18n-iso-countries/-/i18n-iso-countries-4.3.1.tgz",
    +      "integrity": "sha512-yxeCvmT8yO1p/epv93c1OHnnYNNMOX6NUNpNfuvzSIcDyripS7OGeKXgzYGd5QI31UK+GBrMG0nPFNv0jrHggw==",
    +      "dependencies": {
    +        "diacritics": "^1.3.0"
    +      },
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/iconv-lite": {
    +      "version": "0.4.24",
    +      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
    +      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
    +      "peer": true,
    +      "dependencies": {
    +        "safer-buffer": ">= 2.1.2 < 3"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/icss-utils": {
    +      "version": "5.1.0",
    +      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
    +      "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^10 || ^12 || >= 14"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.1.0"
    +      }
    +    },
    +    "node_modules/identity-obj-proxy": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
    +      "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==",
    +      "peer": true,
    +      "dependencies": {
    +        "harmony-reflect": "^1.4.6"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/ieee754": {
    +      "version": "1.2.1",
    +      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
    +      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/feross"
    +        },
    +        {
    +          "type": "patreon",
    +          "url": "https://www.patreon.com/feross"
    +        },
    +        {
    +          "type": "consulting",
    +          "url": "https://feross.org/support"
    +        }
    +      ],
    +      "peer": true
    +    },
    +    "node_modules/ignore": {
    +      "version": "5.2.4",
    +      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
    +      "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 4"
    +      }
    +    },
    +    "node_modules/image-minimizer-webpack-plugin": {
    +      "version": "3.8.3",
    +      "resolved": "https://registry.npmjs.org/image-minimizer-webpack-plugin/-/image-minimizer-webpack-plugin-3.8.3.tgz",
    +      "integrity": "sha512-Ex0cjNJc2FUSuwN7WHNyxkIZINP0M9lrN+uWJznMcsehiM5Z7ELwk+SEkSGEookK1GUd2wf+09jy1PEH5a5XmQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "schema-utils": "^4.2.0",
    +        "serialize-javascript": "^6.0.1"
    +      },
    +      "engines": {
    +        "node": ">= 12.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "webpack": "^5.1.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "@squoosh/lib": {
    +          "optional": true
    +        },
    +        "imagemin": {
    +          "optional": true
    +        },
    +        "sharp": {
    +          "optional": true
    +        },
    +        "svgo": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/image-minimizer-webpack-plugin/node_modules/ajv": {
    +      "version": "8.12.0",
    +      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
    +      "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
    +      "peer": true,
    +      "dependencies": {
    +        "fast-deep-equal": "^3.1.1",
    +        "json-schema-traverse": "^1.0.0",
    +        "require-from-string": "^2.0.2",
    +        "uri-js": "^4.2.2"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/epoberezkin"
    +      }
    +    },
    +    "node_modules/image-minimizer-webpack-plugin/node_modules/ajv-keywords": {
    +      "version": "5.1.0",
    +      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
    +      "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
    +      "peer": true,
    +      "dependencies": {
    +        "fast-deep-equal": "^3.1.3"
    +      },
    +      "peerDependencies": {
    +        "ajv": "^8.8.2"
    +      }
    +    },
    +    "node_modules/image-minimizer-webpack-plugin/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==",
    +      "peer": true
    +    },
    +    "node_modules/image-minimizer-webpack-plugin/node_modules/schema-utils": {
    +      "version": "4.2.0",
    +      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
    +      "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/json-schema": "^7.0.9",
    +        "ajv": "^8.9.0",
    +        "ajv-formats": "^2.1.1",
    +        "ajv-keywords": "^5.1.0"
    +      },
    +      "engines": {
    +        "node": ">= 12.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      }
    +    },
    +    "node_modules/immediate": {
    +      "version": "3.0.6",
    +      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
    +      "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
    +    },
    +    "node_modules/immer": {
    +      "version": "9.0.21",
    +      "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
    +      "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
    +      "peer": true,
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/immer"
    +      }
    +    },
    +    "node_modules/immutable": {
    +      "version": "4.3.1",
    +      "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.1.tgz",
    +      "integrity": "sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A==",
    +      "peer": true
    +    },
    +    "node_modules/import-fresh": {
    +      "version": "3.3.0",
    +      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
    +      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/import-local": {
    +      "version": "3.1.0",
    +      "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
    +      "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
    +      "peer": true,
    +      "dependencies": {
    +        "pkg-dir": "^4.2.0",
    +        "resolve-cwd": "^3.0.0"
    +      },
    +      "bin": {
    +        "import-local-fixture": "fixtures/cli.js"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/import-local/node_modules/find-up": {
    +      "version": "4.1.0",
    +      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
    +      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
    +      "peer": true,
    +      "dependencies": {
    +        "locate-path": "^5.0.0",
    +        "path-exists": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/import-local/node_modules/locate-path": {
    +      "version": "5.0.0",
    +      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
    +      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-locate": "^4.1.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/import-local/node_modules/p-limit": {
    +      "version": "2.3.0",
    +      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
    +      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-try": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/import-local/node_modules/p-locate": {
    +      "version": "4.1.0",
    +      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
    +      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-limit": "^2.2.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/import-local/node_modules/pkg-dir": {
    +      "version": "4.2.0",
    +      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
    +      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "find-up": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/imurmurhash": {
    +      "version": "0.1.4",
    +      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
    +      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.8.19"
    +      }
    +    },
    +    "node_modules/inflight": {
    +      "version": "1.0.6",
    +      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
    +      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
    +      "dependencies": {
    +        "once": "^1.3.0",
    +        "wrappy": "1"
    +      }
    +    },
    +    "node_modules/inherits": {
    +      "version": "2.0.4",
    +      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
    +      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
    +    },
    +    "node_modules/ini": {
    +      "version": "1.3.8",
    +      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
    +      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
    +      "peer": true
    +    },
    +    "node_modules/internal-slot": {
    +      "version": "1.0.5",
    +      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
    +      "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "get-intrinsic": "^1.2.0",
    +        "has": "^1.0.3",
    +        "side-channel": "^1.0.4"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      }
    +    },
    +    "node_modules/interpret": {
    +      "version": "3.1.1",
    +      "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
    +      "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10.13.0"
    +      }
    +    },
    +    "node_modules/intl-messageformat": {
    +      "version": "9.13.0",
    +      "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz",
    +      "integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==",
    +      "dependencies": {
    +        "@formatjs/ecma402-abstract": "1.11.4",
    +        "@formatjs/fast-memoize": "1.2.1",
    +        "@formatjs/icu-messageformat-parser": "2.1.0",
    +        "tslib": "^2.1.0"
    +      }
    +    },
    +    "node_modules/intl-messageformat-parser": {
    +      "version": "5.5.1",
    +      "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-5.5.1.tgz",
    +      "integrity": "sha512-TvB3LqF2VtP6yI6HXlRT5TxX98HKha6hCcrg9dwlPwNaedVNuQA9KgBdtWKgiyakyCTYHQ+KJeFEstNKfZr64w==",
    +      "deprecated": "We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser",
    +      "peer": true,
    +      "dependencies": {
    +        "@formatjs/intl-numberformat": "^5.5.2"
    +      }
    +    },
    +    "node_modules/invariant": {
    +      "version": "2.2.4",
    +      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
    +      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
    +      "dependencies": {
    +        "loose-envify": "^1.0.0"
    +      }
    +    },
    +    "node_modules/ipaddr.js": {
    +      "version": "1.9.1",
    +      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
    +      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.10"
    +      }
    +    },
    +    "node_modules/is-array-buffer": {
    +      "version": "3.0.2",
    +      "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
    +      "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "get-intrinsic": "^1.2.0",
    +        "is-typed-array": "^1.1.10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "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==",
    +      "peer": true
    +    },
    +    "node_modules/is-bigint": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
    +      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
    +      "peer": true,
    +      "dependencies": {
    +        "has-bigints": "^1.0.1"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "binary-extensions": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/is-boolean-object": {
    +      "version": "1.1.2",
    +      "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
    +      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "has-tostringtag": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-callable": {
    +      "version": "1.2.7",
    +      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
    +      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-core-module": {
    +      "version": "2.12.1",
    +      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
    +      "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
    +      "peer": true,
    +      "dependencies": {
    +        "has": "^1.0.3"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-date-object": {
    +      "version": "1.0.5",
    +      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
    +      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "has-tostringtag": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-docker": {
    +      "version": "2.2.1",
    +      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
    +      "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
    +      "peer": true,
    +      "bin": {
    +        "is-docker": "cli.js"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/is-extglob": {
    +      "version": "2.1.1",
    +      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
    +      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/is-generator-fn": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
    +      "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-extglob": "^2.1.1"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/is-invalid-path": {
    +      "version": "0.1.0",
    +      "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz",
    +      "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-glob": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/is-invalid-path/node_modules/is-extglob": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
    +      "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/is-invalid-path/node_modules/is-glob": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
    +      "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-extglob": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/is-negative-zero": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
    +      "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.12.0"
    +      }
    +    },
    +    "node_modules/is-number-object": {
    +      "version": "1.0.7",
    +      "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
    +      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "has-tostringtag": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-path-cwd": {
    +      "version": "2.2.0",
    +      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
    +      "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/is-path-in-cwd": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
    +      "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-path-inside": "^2.1.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/is-path-in-cwd/node_modules/is-path-inside": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
    +      "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
    +      "peer": true,
    +      "dependencies": {
    +        "path-is-inside": "^1.0.2"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/is-path-inside": {
    +      "version": "3.0.3",
    +      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
    +      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/is-plain-obj": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
    +      "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/is-plain-object": {
    +      "version": "2.0.4",
    +      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
    +      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
    +      "peer": true,
    +      "dependencies": {
    +        "isobject": "^3.0.1"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/is-potential-custom-element-name": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
    +      "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
    +      "peer": true
    +    },
    +    "node_modules/is-regex": {
    +      "version": "1.1.4",
    +      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
    +      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "has-tostringtag": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-root": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz",
    +      "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/is-shared-array-buffer": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
    +      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-stream": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
    +      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/is-string": {
    +      "version": "1.0.7",
    +      "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
    +      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
    +      "peer": true,
    +      "dependencies": {
    +        "has-tostringtag": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-symbol": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
    +      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
    +      "peer": true,
    +      "dependencies": {
    +        "has-symbols": "^1.0.2"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-typed-array": {
    +      "version": "1.1.12",
    +      "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
    +      "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
    +      "peer": true,
    +      "dependencies": {
    +        "which-typed-array": "^1.1.11"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-typedarray": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
    +      "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
    +      "peer": true
    +    },
    +    "node_modules/is-valid-path": {
    +      "version": "0.1.1",
    +      "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz",
    +      "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-invalid-path": "^0.1.0"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/is-weakref": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
    +      "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/is-wsl": {
    +      "version": "2.2.0",
    +      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
    +      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-docker": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/isarray": {
    +      "version": "0.0.1",
    +      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
    +      "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
    +    },
    +    "node_modules/isexe": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
    +      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
    +      "peer": true
    +    },
    +    "node_modules/isobject": {
    +      "version": "3.0.1",
    +      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
    +      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/istanbul-lib-coverage": {
    +      "version": "3.2.0",
    +      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
    +      "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/istanbul-lib-instrument": {
    +      "version": "5.2.1",
    +      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
    +      "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/core": "^7.12.3",
    +        "@babel/parser": "^7.14.7",
    +        "@istanbuljs/schema": "^0.1.2",
    +        "istanbul-lib-coverage": "^3.2.0",
    +        "semver": "^6.3.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/istanbul-lib-report": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
    +      "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
    +      "peer": true,
    +      "dependencies": {
    +        "istanbul-lib-coverage": "^3.0.0",
    +        "make-dir": "^3.0.0",
    +        "supports-color": "^7.1.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/istanbul-lib-report/node_modules/make-dir": {
    +      "version": "3.1.0",
    +      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
    +      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
    +      "peer": true,
    +      "dependencies": {
    +        "semver": "^6.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/istanbul-lib-source-maps": {
    +      "version": "4.0.1",
    +      "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
    +      "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
    +      "peer": true,
    +      "dependencies": {
    +        "debug": "^4.1.1",
    +        "istanbul-lib-coverage": "^3.0.0",
    +        "source-map": "^0.6.1"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/istanbul-lib-source-maps/node_modules/source-map": {
    +      "version": "0.6.1",
    +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    +      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/istanbul-reports": {
    +      "version": "3.1.5",
    +      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
    +      "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
    +      "peer": true,
    +      "dependencies": {
    +        "html-escaper": "^2.0.0",
    +        "istanbul-lib-report": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/jest": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz",
    +      "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/core": "^27.5.1",
    +        "import-local": "^3.0.2",
    +        "jest-cli": "^27.5.1"
    +      },
    +      "bin": {
    +        "jest": "bin/jest.js"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      },
    +      "peerDependencies": {
    +        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "node-notifier": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/jest-changed-files": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
    +      "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/types": "^27.5.1",
    +        "execa": "^5.0.0",
    +        "throat": "^6.0.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-circus": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz",
    +      "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/environment": "^27.5.1",
    +        "@jest/test-result": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*",
    +        "chalk": "^4.0.0",
    +        "co": "^4.6.0",
    +        "dedent": "^0.7.0",
    +        "expect": "^27.5.1",
    +        "is-generator-fn": "^2.0.0",
    +        "jest-each": "^27.5.1",
    +        "jest-matcher-utils": "^27.5.1",
    +        "jest-message-util": "^27.5.1",
    +        "jest-runtime": "^27.5.1",
    +        "jest-snapshot": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "pretty-format": "^27.5.1",
    +        "slash": "^3.0.0",
    +        "stack-utils": "^2.0.3",
    +        "throat": "^6.0.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-circus/node_modules/slash": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
    +      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/jest-cli": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz",
    +      "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/core": "^27.5.1",
    +        "@jest/test-result": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "chalk": "^4.0.0",
    +        "exit": "^0.1.2",
    +        "graceful-fs": "^4.2.9",
    +        "import-local": "^3.0.2",
    +        "jest-config": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "jest-validate": "^27.5.1",
    +        "prompts": "^2.0.1",
    +        "yargs": "^16.2.0"
    +      },
    +      "bin": {
    +        "jest": "bin/jest.js"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      },
    +      "peerDependencies": {
    +        "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "node-notifier": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/jest-config": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz",
    +      "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/core": "^7.8.0",
    +        "@jest/test-sequencer": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "babel-jest": "^27.5.1",
    +        "chalk": "^4.0.0",
    +        "ci-info": "^3.2.0",
    +        "deepmerge": "^4.2.2",
    +        "glob": "^7.1.1",
    +        "graceful-fs": "^4.2.9",
    +        "jest-circus": "^27.5.1",
    +        "jest-environment-jsdom": "^27.5.1",
    +        "jest-environment-node": "^27.5.1",
    +        "jest-get-type": "^27.5.1",
    +        "jest-jasmine2": "^27.5.1",
    +        "jest-regex-util": "^27.5.1",
    +        "jest-resolve": "^27.5.1",
    +        "jest-runner": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "jest-validate": "^27.5.1",
    +        "micromatch": "^4.0.4",
    +        "parse-json": "^5.2.0",
    +        "pretty-format": "^27.5.1",
    +        "slash": "^3.0.0",
    +        "strip-json-comments": "^3.1.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      },
    +      "peerDependencies": {
    +        "ts-node": ">=9.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "ts-node": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/jest-config/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/jest-config/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/jest-config/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/jest-config/node_modules/slash": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
    +      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/jest-diff": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
    +      "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
    +      "peer": true,
    +      "dependencies": {
    +        "chalk": "^4.0.0",
    +        "diff-sequences": "^27.5.1",
    +        "jest-get-type": "^27.5.1",
    +        "pretty-format": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-docblock": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz",
    +      "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "detect-newline": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-each": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz",
    +      "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/types": "^27.5.1",
    +        "chalk": "^4.0.0",
    +        "jest-get-type": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "pretty-format": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-environment-jsdom": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
    +      "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/environment": "^27.5.1",
    +        "@jest/fake-timers": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*",
    +        "jest-mock": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "jsdom": "^16.6.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-environment-node": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
    +      "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/environment": "^27.5.1",
    +        "@jest/fake-timers": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*",
    +        "jest-mock": "^27.5.1",
    +        "jest-util": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-get-type": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
    +      "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-haste-map": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
    +      "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/types": "^27.5.1",
    +        "@types/graceful-fs": "^4.1.2",
    +        "@types/node": "*",
    +        "anymatch": "^3.0.3",
    +        "fb-watchman": "^2.0.0",
    +        "graceful-fs": "^4.2.9",
    +        "jest-regex-util": "^27.5.1",
    +        "jest-serializer": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "jest-worker": "^27.5.1",
    +        "micromatch": "^4.0.4",
    +        "walker": "^1.0.7"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      },
    +      "optionalDependencies": {
    +        "fsevents": "^2.3.2"
    +      }
    +    },
    +    "node_modules/jest-jasmine2": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
    +      "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/environment": "^27.5.1",
    +        "@jest/source-map": "^27.5.1",
    +        "@jest/test-result": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*",
    +        "chalk": "^4.0.0",
    +        "co": "^4.6.0",
    +        "expect": "^27.5.1",
    +        "is-generator-fn": "^2.0.0",
    +        "jest-each": "^27.5.1",
    +        "jest-matcher-utils": "^27.5.1",
    +        "jest-message-util": "^27.5.1",
    +        "jest-runtime": "^27.5.1",
    +        "jest-snapshot": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "pretty-format": "^27.5.1",
    +        "throat": "^6.0.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-leak-detector": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
    +      "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "jest-get-type": "^27.5.1",
    +        "pretty-format": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-matcher-utils": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
    +      "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
    +      "peer": true,
    +      "dependencies": {
    +        "chalk": "^4.0.0",
    +        "jest-diff": "^27.5.1",
    +        "jest-get-type": "^27.5.1",
    +        "pretty-format": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-message-util": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
    +      "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/code-frame": "^7.12.13",
    +        "@jest/types": "^27.5.1",
    +        "@types/stack-utils": "^2.0.0",
    +        "chalk": "^4.0.0",
    +        "graceful-fs": "^4.2.9",
    +        "micromatch": "^4.0.4",
    +        "pretty-format": "^27.5.1",
    +        "slash": "^3.0.0",
    +        "stack-utils": "^2.0.3"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-message-util/node_modules/slash": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
    +      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/jest-mock": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
    +      "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-pnp-resolver": {
    +      "version": "1.2.3",
    +      "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
    +      "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      },
    +      "peerDependencies": {
    +        "jest-resolve": "*"
    +      },
    +      "peerDependenciesMeta": {
    +        "jest-resolve": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/jest-regex-util": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
    +      "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-resolve": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz",
    +      "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/types": "^27.5.1",
    +        "chalk": "^4.0.0",
    +        "graceful-fs": "^4.2.9",
    +        "jest-haste-map": "^27.5.1",
    +        "jest-pnp-resolver": "^1.2.2",
    +        "jest-util": "^27.5.1",
    +        "jest-validate": "^27.5.1",
    +        "resolve": "^1.20.0",
    +        "resolve.exports": "^1.1.0",
    +        "slash": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-resolve-dependencies": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
    +      "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/types": "^27.5.1",
    +        "jest-regex-util": "^27.5.1",
    +        "jest-snapshot": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-resolve/node_modules/slash": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
    +      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/jest-runner": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz",
    +      "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/console": "^27.5.1",
    +        "@jest/environment": "^27.5.1",
    +        "@jest/test-result": "^27.5.1",
    +        "@jest/transform": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*",
    +        "chalk": "^4.0.0",
    +        "emittery": "^0.8.1",
    +        "graceful-fs": "^4.2.9",
    +        "jest-docblock": "^27.5.1",
    +        "jest-environment-jsdom": "^27.5.1",
    +        "jest-environment-node": "^27.5.1",
    +        "jest-haste-map": "^27.5.1",
    +        "jest-leak-detector": "^27.5.1",
    +        "jest-message-util": "^27.5.1",
    +        "jest-resolve": "^27.5.1",
    +        "jest-runtime": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "jest-worker": "^27.5.1",
    +        "source-map-support": "^0.5.6",
    +        "throat": "^6.0.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-runtime": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz",
    +      "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/environment": "^27.5.1",
    +        "@jest/fake-timers": "^27.5.1",
    +        "@jest/globals": "^27.5.1",
    +        "@jest/source-map": "^27.5.1",
    +        "@jest/test-result": "^27.5.1",
    +        "@jest/transform": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "chalk": "^4.0.0",
    +        "cjs-module-lexer": "^1.0.0",
    +        "collect-v8-coverage": "^1.0.0",
    +        "execa": "^5.0.0",
    +        "glob": "^7.1.3",
    +        "graceful-fs": "^4.2.9",
    +        "jest-haste-map": "^27.5.1",
    +        "jest-message-util": "^27.5.1",
    +        "jest-mock": "^27.5.1",
    +        "jest-regex-util": "^27.5.1",
    +        "jest-resolve": "^27.5.1",
    +        "jest-snapshot": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "slash": "^3.0.0",
    +        "strip-bom": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-runtime/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/jest-runtime/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/jest-runtime/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/jest-runtime/node_modules/slash": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
    +      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/jest-serializer": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
    +      "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/node": "*",
    +        "graceful-fs": "^4.2.9"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-snapshot": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
    +      "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/core": "^7.7.2",
    +        "@babel/generator": "^7.7.2",
    +        "@babel/plugin-syntax-typescript": "^7.7.2",
    +        "@babel/traverse": "^7.7.2",
    +        "@babel/types": "^7.0.0",
    +        "@jest/transform": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/babel__traverse": "^7.0.4",
    +        "@types/prettier": "^2.1.5",
    +        "babel-preset-current-node-syntax": "^1.0.0",
    +        "chalk": "^4.0.0",
    +        "expect": "^27.5.1",
    +        "graceful-fs": "^4.2.9",
    +        "jest-diff": "^27.5.1",
    +        "jest-get-type": "^27.5.1",
    +        "jest-haste-map": "^27.5.1",
    +        "jest-matcher-utils": "^27.5.1",
    +        "jest-message-util": "^27.5.1",
    +        "jest-util": "^27.5.1",
    +        "natural-compare": "^1.4.0",
    +        "pretty-format": "^27.5.1",
    +        "semver": "^7.3.2"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-snapshot/node_modules/lru-cache": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
    +      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "yallist": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/jest-snapshot/node_modules/semver": {
    +      "version": "7.5.4",
    +      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
    +      "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
    +      "peer": true,
    +      "dependencies": {
    +        "lru-cache": "^6.0.0"
    +      },
    +      "bin": {
    +        "semver": "bin/semver.js"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/jest-snapshot/node_modules/yallist": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
    +      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
    +      "peer": true
    +    },
    +    "node_modules/jest-util": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
    +      "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*",
    +        "chalk": "^4.0.0",
    +        "ci-info": "^3.2.0",
    +        "graceful-fs": "^4.2.9",
    +        "picomatch": "^2.2.3"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-validate": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz",
    +      "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/types": "^27.5.1",
    +        "camelcase": "^6.2.0",
    +        "chalk": "^4.0.0",
    +        "jest-get-type": "^27.5.1",
    +        "leven": "^3.1.0",
    +        "pretty-format": "^27.5.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-watcher": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz",
    +      "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jest/test-result": "^27.5.1",
    +        "@jest/types": "^27.5.1",
    +        "@types/node": "*",
    +        "ansi-escapes": "^4.2.1",
    +        "chalk": "^4.0.0",
    +        "jest-util": "^27.5.1",
    +        "string-length": "^4.0.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/jest-worker": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
    +      "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/node": "*",
    +        "merge-stream": "^2.0.0",
    +        "supports-color": "^8.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 10.13.0"
    +      }
    +    },
    +    "node_modules/jest-worker/node_modules/supports-color": {
    +      "version": "8.1.1",
    +      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
    +      "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "has-flag": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/chalk/supports-color?sponsor=1"
    +      }
    +    },
    +    "node_modules/jiti": {
    +      "version": "1.19.1",
    +      "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz",
    +      "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==",
    +      "peer": true,
    +      "bin": {
    +        "jiti": "bin/jiti.js"
    +      }
    +    },
    +    "node_modules/jquery": {
    +      "version": "3.7.0",
    +      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.0.tgz",
    +      "integrity": "sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ==",
    +      "peer": true
    +    },
    +    "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=="
    +    },
    +    "node_modules/js-yaml": {
    +      "version": "3.14.1",
    +      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
    +      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
    +      "peer": true,
    +      "dependencies": {
    +        "argparse": "^1.0.7",
    +        "esprima": "^4.0.0"
    +      },
    +      "bin": {
    +        "js-yaml": "bin/js-yaml.js"
    +      }
    +    },
    +    "node_modules/jsdom": {
    +      "version": "16.7.0",
    +      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
    +      "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
    +      "peer": true,
    +      "dependencies": {
    +        "abab": "^2.0.5",
    +        "acorn": "^8.2.4",
    +        "acorn-globals": "^6.0.0",
    +        "cssom": "^0.4.4",
    +        "cssstyle": "^2.3.0",
    +        "data-urls": "^2.0.0",
    +        "decimal.js": "^10.2.1",
    +        "domexception": "^2.0.1",
    +        "escodegen": "^2.0.0",
    +        "form-data": "^3.0.0",
    +        "html-encoding-sniffer": "^2.0.1",
    +        "http-proxy-agent": "^4.0.1",
    +        "https-proxy-agent": "^5.0.0",
    +        "is-potential-custom-element-name": "^1.0.1",
    +        "nwsapi": "^2.2.0",
    +        "parse5": "6.0.1",
    +        "saxes": "^5.0.1",
    +        "symbol-tree": "^3.2.4",
    +        "tough-cookie": "^4.0.0",
    +        "w3c-hr-time": "^1.0.2",
    +        "w3c-xmlserializer": "^2.0.0",
    +        "webidl-conversions": "^6.1.0",
    +        "whatwg-encoding": "^1.0.5",
    +        "whatwg-mimetype": "^2.3.0",
    +        "whatwg-url": "^8.5.0",
    +        "ws": "^7.4.6",
    +        "xml-name-validator": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "peerDependencies": {
    +        "canvas": "^2.5.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "canvas": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/jsdom/node_modules/form-data": {
    +      "version": "3.0.1",
    +      "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
    +      "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
    +      "peer": true,
    +      "dependencies": {
    +        "asynckit": "^0.4.0",
    +        "combined-stream": "^1.0.8",
    +        "mime-types": "^2.1.12"
    +      },
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/jsesc": {
    +      "version": "2.5.2",
    +      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
    +      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
    +      "peer": true,
    +      "bin": {
    +        "jsesc": "bin/jsesc"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "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==",
    +      "peer": true
    +    },
    +    "node_modules/json-schema-traverse": {
    +      "version": "0.4.1",
    +      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
    +      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
    +      "peer": true
    +    },
    +    "node_modules/json-stable-stringify-without-jsonify": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
    +      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
    +      "peer": true
    +    },
    +    "node_modules/json5": {
    +      "version": "2.2.3",
    +      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
    +      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
    +      "peer": true,
    +      "bin": {
    +        "json5": "lib/cli.js"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/jsonfile": {
    +      "version": "6.1.0",
    +      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
    +      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "universalify": "^2.0.0"
    +      },
    +      "optionalDependencies": {
    +        "graceful-fs": "^4.1.6"
    +      }
    +    },
    +    "node_modules/jsx-ast-utils": {
    +      "version": "3.3.4",
    +      "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz",
    +      "integrity": "sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==",
    +      "peer": true,
    +      "dependencies": {
    +        "array-includes": "^3.1.6",
    +        "array.prototype.flat": "^1.3.1",
    +        "object.assign": "^4.1.4",
    +        "object.values": "^1.1.6"
    +      },
    +      "engines": {
    +        "node": ">=4.0"
    +      }
    +    },
    +    "node_modules/jwt-decode": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz",
    +      "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A=="
    +    },
    +    "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/kleur": {
    +      "version": "3.0.3",
    +      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
    +      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/language-subtag-registry": {
    +      "version": "0.3.22",
    +      "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz",
    +      "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==",
    +      "peer": true
    +    },
    +    "node_modules/language-tags": {
    +      "version": "1.0.5",
    +      "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz",
    +      "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "language-subtag-registry": "~0.3.2"
    +      }
    +    },
    +    "node_modules/launch-editor": {
    +      "version": "2.6.0",
    +      "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz",
    +      "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "picocolors": "^1.0.0",
    +        "shell-quote": "^1.7.3"
    +      }
    +    },
    +    "node_modules/leven": {
    +      "version": "3.1.0",
    +      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
    +      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/levn": {
    +      "version": "0.4.1",
    +      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
    +      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "prelude-ls": "^1.2.1",
    +        "type-check": "~0.4.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.8.0"
    +      }
    +    },
    +    "node_modules/lie": {
    +      "version": "3.1.1",
    +      "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
    +      "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==",
    +      "dependencies": {
    +        "immediate": "~3.0.5"
    +      }
    +    },
    +    "node_modules/lilconfig": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
    +      "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "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==",
    +      "peer": true
    +    },
    +    "node_modules/loader-runner": {
    +      "version": "4.3.0",
    +      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
    +      "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6.11.5"
    +      }
    +    },
    +    "node_modules/loader-utils": {
    +      "version": "2.0.4",
    +      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
    +      "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
    +      "peer": true,
    +      "dependencies": {
    +        "big.js": "^5.2.2",
    +        "emojis-list": "^3.0.0",
    +        "json5": "^2.1.2"
    +      },
    +      "engines": {
    +        "node": ">=8.9.0"
    +      }
    +    },
    +    "node_modules/localforage": {
    +      "version": "1.10.0",
    +      "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz",
    +      "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==",
    +      "dependencies": {
    +        "lie": "3.1.1"
    +      }
    +    },
    +    "node_modules/localforage-memoryStorageDriver": {
    +      "version": "0.9.2",
    +      "resolved": "https://registry.npmjs.org/localforage-memoryStorageDriver/-/localforage-memoryStorageDriver-0.9.2.tgz",
    +      "integrity": "sha512-DRB4BkkW9o5HIetbsuvtcg98GP7J1JBRDyDMJK13hfr9QsNpnMW6UUWmU9c6bcRg99akR1mGZ/ubUV1Ek0fbpg==",
    +      "dependencies": {
    +        "localforage": ">=1.4.0"
    +      }
    +    },
    +    "node_modules/locate-path": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
    +      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-locate": "^5.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/lodash": {
    +      "version": "4.17.21",
    +      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
    +      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
    +      "peer": true
    +    },
    +    "node_modules/lodash.camelcase": {
    +      "version": "4.3.0",
    +      "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
    +      "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
    +    },
    +    "node_modules/lodash.debounce": {
    +      "version": "4.0.8",
    +      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
    +      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
    +      "peer": true
    +    },
    +    "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=="
    +    },
    +    "node_modules/lodash.merge": {
    +      "version": "4.6.2",
    +      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
    +      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
    +    },
    +    "node_modules/lodash.snakecase": {
    +      "version": "4.1.1",
    +      "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
    +      "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw=="
    +    },
    +    "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==",
    +      "peer": true
    +    },
    +    "node_modules/lodash.uniqby": {
    +      "version": "4.7.0",
    +      "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
    +      "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww=="
    +    },
    +    "node_modules/loose-envify": {
    +      "version": "1.4.0",
    +      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
    +      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
    +      "dependencies": {
    +        "js-tokens": "^3.0.0 || ^4.0.0"
    +      },
    +      "bin": {
    +        "loose-envify": "cli.js"
    +      }
    +    },
    +    "node_modules/lower-case": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
    +      "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
    +      "peer": true,
    +      "dependencies": {
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/lru-cache": {
    +      "version": "5.1.1",
    +      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
    +      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
    +      "peer": true,
    +      "dependencies": {
    +        "yallist": "^3.0.2"
    +      }
    +    },
    +    "node_modules/mailto-link": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/mailto-link/-/mailto-link-2.0.0.tgz",
    +      "integrity": "sha512-b5FErkZ4t6mpH1IFZSw7Mm2IQHXQ2R0/5Q4xd7Rv8dVkWvE54mFG/UW7HjfFazXFjXTNsM+dSX2tTeIDrV9K9A==",
    +      "dependencies": {
    +        "assert-ok": "~1.0.0",
    +        "cast-array": "~1.0.1",
    +        "object-filter": "~1.0.2",
    +        "query-string": "~7.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 12"
    +      }
    +    },
    +    "node_modules/make-dir": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
    +      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
    +      "peer": true,
    +      "dependencies": {
    +        "pify": "^4.0.1",
    +        "semver": "^5.6.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/make-dir/node_modules/semver": {
    +      "version": "5.7.2",
    +      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
    +      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
    +      "peer": true,
    +      "bin": {
    +        "semver": "bin/semver"
    +      }
    +    },
    +    "node_modules/makeerror": {
    +      "version": "1.0.12",
    +      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
    +      "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
    +      "peer": true,
    +      "dependencies": {
    +        "tmpl": "1.0.5"
    +      }
    +    },
    +    "node_modules/matchmediaquery": {
    +      "version": "0.3.1",
    +      "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz",
    +      "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==",
    +      "dependencies": {
    +        "css-mediaquery": "^0.1.2"
    +      }
    +    },
    +    "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==",
    +      "peer": true
    +    },
    +    "node_modules/media-typer": {
    +      "version": "0.3.0",
    +      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
    +      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/memfs": {
    +      "version": "3.5.3",
    +      "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz",
    +      "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==",
    +      "peer": true,
    +      "dependencies": {
    +        "fs-monkey": "^1.0.4"
    +      },
    +      "engines": {
    +        "node": ">= 4.0.0"
    +      }
    +    },
    +    "node_modules/merge-descriptors": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
    +      "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
    +      "peer": true
    +    },
    +    "node_modules/merge-stream": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
    +      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
    +      "peer": true
    +    },
    +    "node_modules/merge2": {
    +      "version": "1.4.1",
    +      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
    +      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 8"
    +      }
    +    },
    +    "node_modules/methods": {
    +      "version": "1.1.2",
    +      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
    +      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/micromatch": {
    +      "version": "4.0.5",
    +      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
    +      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
    +      "peer": true,
    +      "dependencies": {
    +        "braces": "^3.0.2",
    +        "picomatch": "^2.3.1"
    +      },
    +      "engines": {
    +        "node": ">=8.6"
    +      }
    +    },
    +    "node_modules/mime": {
    +      "version": "1.6.0",
    +      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
    +      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
    +      "peer": true,
    +      "bin": {
    +        "mime": "cli.js"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/mime-db": {
    +      "version": "1.52.0",
    +      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
    +      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/mime-types": {
    +      "version": "2.1.35",
    +      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
    +      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
    +      "dependencies": {
    +        "mime-db": "1.52.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/mimic-fn": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
    +      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/mimic-response": {
    +      "version": "3.1.0",
    +      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
    +      "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/mini-css-extract-plugin": {
    +      "version": "1.6.2",
    +      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz",
    +      "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "loader-utils": "^2.0.0",
    +        "schema-utils": "^3.0.0",
    +        "webpack-sources": "^1.1.0"
    +      },
    +      "engines": {
    +        "node": ">= 10.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "webpack": "^4.4.0 || ^5.0.0"
    +      }
    +    },
    +    "node_modules/minimalistic-assert": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
    +      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
    +      "peer": true
    +    },
    +    "node_modules/minimatch": {
    +      "version": "5.1.6",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
    +      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
    +      "dependencies": {
    +        "brace-expansion": "^2.0.1"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/minimist": {
    +      "version": "1.2.8",
    +      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
    +      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
    +      "peer": true,
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/mkdirp-classic": {
    +      "version": "0.5.3",
    +      "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
    +      "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
    +      "peer": true
    +    },
    +    "node_modules/mrmime": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz",
    +      "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/ms": {
    +      "version": "2.1.2",
    +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
    +      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
    +      "peer": true
    +    },
    +    "node_modules/multicast-dns": {
    +      "version": "7.2.5",
    +      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
    +      "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
    +      "peer": true,
    +      "dependencies": {
    +        "dns-packet": "^5.2.2",
    +        "thunky": "^1.0.2"
    +      },
    +      "bin": {
    +        "multicast-dns": "cli.js"
    +      }
    +    },
    +    "node_modules/nanoid": {
    +      "version": "3.3.6",
    +      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
    +      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/ai"
    +        }
    +      ],
    +      "peer": true,
    +      "bin": {
    +        "nanoid": "bin/nanoid.cjs"
    +      },
    +      "engines": {
    +        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
    +      }
    +    },
    +    "node_modules/napi-build-utils": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
    +      "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
    +      "peer": true
    +    },
    +    "node_modules/natural-compare": {
    +      "version": "1.4.0",
    +      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
    +      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
    +      "peer": true
    +    },
    +    "node_modules/negotiator": {
    +      "version": "0.6.3",
    +      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
    +      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/neo-async": {
    +      "version": "2.6.2",
    +      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
    +      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
    +      "peer": true
    +    },
    +    "node_modules/no-case": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
    +      "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
    +      "peer": true,
    +      "dependencies": {
    +        "lower-case": "^2.0.2",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/node-abi": {
    +      "version": "3.45.0",
    +      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz",
    +      "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "semver": "^7.3.5"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/node-abi/node_modules/lru-cache": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
    +      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "yallist": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/node-abi/node_modules/semver": {
    +      "version": "7.5.4",
    +      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
    +      "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
    +      "peer": true,
    +      "dependencies": {
    +        "lru-cache": "^6.0.0"
    +      },
    +      "bin": {
    +        "semver": "bin/semver.js"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/node-abi/node_modules/yallist": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
    +      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
    +      "peer": true
    +    },
    +    "node_modules/node-addon-api": {
    +      "version": "6.1.0",
    +      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
    +      "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
    +      "peer": true
    +    },
    +    "node_modules/node-forge": {
    +      "version": "1.3.1",
    +      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
    +      "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 6.13.0"
    +      }
    +    },
    +    "node_modules/node-int64": {
    +      "version": "0.4.0",
    +      "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
    +      "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
    +      "peer": true
    +    },
    +    "node_modules/node-releases": {
    +      "version": "2.0.13",
    +      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
    +      "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
    +      "peer": true
    +    },
    +    "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==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/npm-run-path": {
    +      "version": "4.0.1",
    +      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
    +      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
    +      "peer": true,
    +      "dependencies": {
    +        "path-key": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "boolbase": "^1.0.0"
    +      },
    +      "funding": {
    +        "url": "https://github.com/fb55/nth-check?sponsor=1"
    +      }
    +    },
    +    "node_modules/nwsapi": {
    +      "version": "2.2.7",
    +      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
    +      "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==",
    +      "peer": true
    +    },
    +    "node_modules/object-assign": {
    +      "version": "4.1.1",
    +      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
    +      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/object-code": {
    +      "version": "1.2.4",
    +      "resolved": "https://registry.npmjs.org/object-code/-/object-code-1.2.4.tgz",
    +      "integrity": "sha512-uGq4ETUuWe+GA586NXEriiaozNuff+YNFXlpD8cVrM1GoiuTZpCABP+bZCWDrvQDoCiSTyiWAFHD/HF/iwhb2w=="
    +    },
    +    "node_modules/object-filter": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/object-filter/-/object-filter-1.0.2.tgz",
    +      "integrity": "sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA=="
    +    },
    +    "node_modules/object-inspect": {
    +      "version": "1.12.3",
    +      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
    +      "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
    +      "peer": true,
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/object-keys": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
    +      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.4"
    +      }
    +    },
    +    "node_modules/object.assign": {
    +      "version": "4.1.4",
    +      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
    +      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "has-symbols": "^1.0.3",
    +        "object-keys": "^1.1.1"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/object.entries": {
    +      "version": "1.1.6",
    +      "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz",
    +      "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      }
    +    },
    +    "node_modules/object.fromentries": {
    +      "version": "2.0.6",
    +      "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz",
    +      "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/object.hasown": {
    +      "version": "1.1.2",
    +      "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz",
    +      "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/object.values": {
    +      "version": "1.1.6",
    +      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz",
    +      "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/obuf": {
    +      "version": "1.1.2",
    +      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
    +      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
    +      "peer": true
    +    },
    +    "node_modules/on-finished": {
    +      "version": "2.4.1",
    +      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
    +      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
    +      "peer": true,
    +      "dependencies": {
    +        "ee-first": "1.1.1"
    +      },
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/on-headers": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
    +      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/once": {
    +      "version": "1.4.0",
    +      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
    +      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
    +      "dependencies": {
    +        "wrappy": "1"
    +      }
    +    },
    +    "node_modules/onetime": {
    +      "version": "5.1.2",
    +      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
    +      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
    +      "peer": true,
    +      "dependencies": {
    +        "mimic-fn": "^2.1.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/open": {
    +      "version": "8.4.2",
    +      "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
    +      "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "define-lazy-prop": "^2.0.0",
    +        "is-docker": "^2.1.1",
    +        "is-wsl": "^2.2.0"
    +      },
    +      "engines": {
    +        "node": ">=12"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/opener": {
    +      "version": "1.5.2",
    +      "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
    +      "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
    +      "peer": true,
    +      "bin": {
    +        "opener": "bin/opener-bin.js"
    +      }
    +    },
    +    "node_modules/optionator": {
    +      "version": "0.9.3",
    +      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
    +      "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@aashutoshrathi/word-wrap": "^1.2.3",
    +        "deep-is": "^0.1.3",
    +        "fast-levenshtein": "^2.0.6",
    +        "levn": "^0.4.1",
    +        "prelude-ls": "^1.2.1",
    +        "type-check": "^0.4.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.8.0"
    +      }
    +    },
    +    "node_modules/p-limit": {
    +      "version": "3.1.0",
    +      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
    +      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "yocto-queue": "^0.1.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/p-locate": {
    +      "version": "5.0.0",
    +      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
    +      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-limit": "^3.0.2"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/p-map": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
    +      "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/p-retry": {
    +      "version": "4.6.2",
    +      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
    +      "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/retry": "0.12.0",
    +        "retry": "^0.13.1"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/p-try": {
    +      "version": "2.2.0",
    +      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
    +      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/param-case": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
    +      "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
    +      "peer": true,
    +      "dependencies": {
    +        "dot-case": "^3.0.4",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "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/parse5": {
    +      "version": "6.0.1",
    +      "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
    +      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
    +      "peer": true
    +    },
    +    "node_modules/parseurl": {
    +      "version": "1.3.3",
    +      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
    +      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/pascal-case": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
    +      "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
    +      "peer": true,
    +      "dependencies": {
    +        "no-case": "^3.0.4",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/path-exists": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
    +      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/path-is-absolute": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
    +      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/path-is-inside": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
    +      "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
    +      "peer": true
    +    },
    +    "node_modules/path-key": {
    +      "version": "3.1.1",
    +      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
    +      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/path-parse": {
    +      "version": "1.0.7",
    +      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
    +      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
    +      "peer": true
    +    },
    +    "node_modules/path-to-regexp": {
    +      "version": "1.8.0",
    +      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
    +      "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
    +      "dependencies": {
    +        "isarray": "0.0.1"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/picocolors": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
    +      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
    +      "peer": true
    +    },
    +    "node_modules/picomatch": {
    +      "version": "2.3.1",
    +      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
    +      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8.6"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/jonschlinkert"
    +      }
    +    },
    +    "node_modules/pify": {
    +      "version": "4.0.1",
    +      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
    +      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/pinkie": {
    +      "version": "2.0.4",
    +      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
    +      "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/pinkie-promise": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
    +      "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
    +      "peer": true,
    +      "dependencies": {
    +        "pinkie": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/pirates": {
    +      "version": "4.0.6",
    +      "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
    +      "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/pkg-dir": {
    +      "version": "7.0.0",
    +      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
    +      "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
    +      "peer": true,
    +      "dependencies": {
    +        "find-up": "^6.3.0"
    +      },
    +      "engines": {
    +        "node": ">=14.16"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/pkg-dir/node_modules/find-up": {
    +      "version": "6.3.0",
    +      "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
    +      "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
    +      "peer": true,
    +      "dependencies": {
    +        "locate-path": "^7.1.0",
    +        "path-exists": "^5.0.0"
    +      },
    +      "engines": {
    +        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/pkg-dir/node_modules/locate-path": {
    +      "version": "7.2.0",
    +      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
    +      "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-locate": "^6.0.0"
    +      },
    +      "engines": {
    +        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/pkg-dir/node_modules/p-limit": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
    +      "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "yocto-queue": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/pkg-dir/node_modules/p-locate": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
    +      "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-limit": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/pkg-dir/node_modules/path-exists": {
    +      "version": "5.0.0",
    +      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
    +      "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
    +      }
    +    },
    +    "node_modules/pkg-dir/node_modules/yocto-queue": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
    +      "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=12.20"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/pkg-up": {
    +      "version": "3.1.0",
    +      "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
    +      "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
    +      "peer": true,
    +      "dependencies": {
    +        "find-up": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/pkg-up/node_modules/find-up": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
    +      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
    +      "peer": true,
    +      "dependencies": {
    +        "locate-path": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/pkg-up/node_modules/locate-path": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
    +      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-locate": "^3.0.0",
    +        "path-exists": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/pkg-up/node_modules/p-limit": {
    +      "version": "2.3.0",
    +      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
    +      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-try": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/pkg-up/node_modules/p-locate": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
    +      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "p-limit": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/pkg-up/node_modules/path-exists": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
    +      "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/popper.js": {
    +      "version": "1.16.1",
    +      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
    +      "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
    +      "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1",
    +      "peer": true,
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/popperjs"
    +      }
    +    },
    +    "node_modules/postcss": {
    +      "version": "8.4.26",
    +      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz",
    +      "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==",
    +      "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"
    +        }
    +      ],
    +      "peer": true,
    +      "dependencies": {
    +        "nanoid": "^3.3.6",
    +        "picocolors": "^1.0.0",
    +        "source-map-js": "^1.0.2"
    +      },
    +      "engines": {
    +        "node": "^10 || ^12 || >=14"
    +      }
    +    },
    +    "node_modules/postcss-calc": {
    +      "version": "9.0.1",
    +      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz",
    +      "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-selector-parser": "^6.0.11",
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.2"
    +      }
    +    },
    +    "node_modules/postcss-colormin": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz",
    +      "integrity": "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==",
    +      "peer": true,
    +      "dependencies": {
    +        "browserslist": "^4.21.4",
    +        "caniuse-api": "^3.0.0",
    +        "colord": "^2.9.1",
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-convert-values": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz",
    +      "integrity": "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==",
    +      "peer": true,
    +      "dependencies": {
    +        "browserslist": "^4.21.4",
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-custom-media": {
    +      "version": "9.1.5",
    +      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-9.1.5.tgz",
    +      "integrity": "sha512-GStyWMz7Qbo/Gtw1xVspzVSX8eipgNg4lpsO3CAeY4/A1mzok+RV6MCv3fg62trWijh/lYEj6vps4o8JcBBpDA==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/csstools"
    +        },
    +        {
    +          "type": "opencollective",
    +          "url": "https://opencollective.com/csstools"
    +        }
    +      ],
    +      "peer": true,
    +      "dependencies": {
    +        "@csstools/cascade-layer-name-parser": "^1.0.2",
    +        "@csstools/css-parser-algorithms": "^2.2.0",
    +        "@csstools/css-tokenizer": "^2.1.1",
    +        "@csstools/media-query-list-parser": "^2.1.1"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.4"
    +      }
    +    },
    +    "node_modules/postcss-discard-comments": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz",
    +      "integrity": "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-discard-duplicates": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz",
    +      "integrity": "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-discard-empty": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz",
    +      "integrity": "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-discard-overridden": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz",
    +      "integrity": "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-loader": {
    +      "version": "7.3.3",
    +      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz",
    +      "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==",
    +      "peer": true,
    +      "dependencies": {
    +        "cosmiconfig": "^8.2.0",
    +        "jiti": "^1.18.2",
    +        "semver": "^7.3.8"
    +      },
    +      "engines": {
    +        "node": ">= 14.15.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^7.0.0 || ^8.0.1",
    +        "webpack": "^5.0.0"
    +      }
    +    },
    +    "node_modules/postcss-loader/node_modules/lru-cache": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
    +      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "yallist": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/postcss-loader/node_modules/semver": {
    +      "version": "7.5.4",
    +      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
    +      "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
    +      "peer": true,
    +      "dependencies": {
    +        "lru-cache": "^6.0.0"
    +      },
    +      "bin": {
    +        "semver": "bin/semver.js"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/postcss-loader/node_modules/yallist": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
    +      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
    +      "peer": true
    +    },
    +    "node_modules/postcss-merge-longhand": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz",
    +      "integrity": "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-value-parser": "^4.2.0",
    +        "stylehacks": "^6.0.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-merge-rules": {
    +      "version": "6.0.1",
    +      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz",
    +      "integrity": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==",
    +      "peer": true,
    +      "dependencies": {
    +        "browserslist": "^4.21.4",
    +        "caniuse-api": "^3.0.0",
    +        "cssnano-utils": "^4.0.0",
    +        "postcss-selector-parser": "^6.0.5"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-minify-font-values": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz",
    +      "integrity": "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-minify-gradients": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz",
    +      "integrity": "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==",
    +      "peer": true,
    +      "dependencies": {
    +        "colord": "^2.9.1",
    +        "cssnano-utils": "^4.0.0",
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-minify-params": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz",
    +      "integrity": "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "browserslist": "^4.21.4",
    +        "cssnano-utils": "^4.0.0",
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-minify-selectors": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz",
    +      "integrity": "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-selector-parser": "^6.0.5"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-modules-extract-imports": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
    +      "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^10 || ^12 || >= 14"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.1.0"
    +      }
    +    },
    +    "node_modules/postcss-modules-local-by-default": {
    +      "version": "4.0.3",
    +      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz",
    +      "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==",
    +      "peer": true,
    +      "dependencies": {
    +        "icss-utils": "^5.0.0",
    +        "postcss-selector-parser": "^6.0.2",
    +        "postcss-value-parser": "^4.1.0"
    +      },
    +      "engines": {
    +        "node": "^10 || ^12 || >= 14"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.1.0"
    +      }
    +    },
    +    "node_modules/postcss-modules-scope": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz",
    +      "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-selector-parser": "^6.0.4"
    +      },
    +      "engines": {
    +        "node": "^10 || ^12 || >= 14"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.1.0"
    +      }
    +    },
    +    "node_modules/postcss-modules-values": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
    +      "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "icss-utils": "^5.0.0"
    +      },
    +      "engines": {
    +        "node": "^10 || ^12 || >= 14"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.1.0"
    +      }
    +    },
    +    "node_modules/postcss-normalize-charset": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz",
    +      "integrity": "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-normalize-display-values": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz",
    +      "integrity": "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-normalize-positions": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz",
    +      "integrity": "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-normalize-repeat-style": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz",
    +      "integrity": "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-normalize-string": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz",
    +      "integrity": "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-normalize-timing-functions": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz",
    +      "integrity": "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-normalize-unicode": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz",
    +      "integrity": "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==",
    +      "peer": true,
    +      "dependencies": {
    +        "browserslist": "^4.21.4",
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-normalize-url": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz",
    +      "integrity": "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-normalize-whitespace": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz",
    +      "integrity": "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-ordered-values": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz",
    +      "integrity": "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==",
    +      "peer": true,
    +      "dependencies": {
    +        "cssnano-utils": "^4.0.0",
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-reduce-initial": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz",
    +      "integrity": "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==",
    +      "peer": true,
    +      "dependencies": {
    +        "browserslist": "^4.21.4",
    +        "caniuse-api": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-reduce-transforms": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz",
    +      "integrity": "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-value-parser": "^4.2.0"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-rtlcss": {
    +      "version": "4.0.6",
    +      "resolved": "https://registry.npmjs.org/postcss-rtlcss/-/postcss-rtlcss-4.0.6.tgz",
    +      "integrity": "sha512-YNm6g2Y7Gngqtrpq3GC7cUkzH5Gq7aB+Lw9MSgF9s2ro1BDY7W4zqnd15g2ueatUUpSTg2/F5KDjQoTdjhbAKg==",
    +      "peer": true,
    +      "dependencies": {
    +        "rtlcss": "4.1.0"
    +      },
    +      "engines": {
    +        "node": ">=12.0.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.4.21"
    +      }
    +    },
    +    "node_modules/postcss-selector-parser": {
    +      "version": "6.0.13",
    +      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
    +      "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "cssesc": "^3.0.0",
    +        "util-deprecate": "^1.0.2"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/postcss-svgo": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz",
    +      "integrity": "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-value-parser": "^4.2.0",
    +        "svgo": "^3.0.2"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >= 18"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/postcss-unique-selectors": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz",
    +      "integrity": "sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==",
    +      "peer": true,
    +      "dependencies": {
    +        "postcss-selector-parser": "^6.0.5"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "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==",
    +      "peer": true
    +    },
    +    "node_modules/prebuild-install": {
    +      "version": "7.1.1",
    +      "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
    +      "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
    +      "peer": true,
    +      "dependencies": {
    +        "detect-libc": "^2.0.0",
    +        "expand-template": "^2.0.3",
    +        "github-from-package": "0.0.0",
    +        "minimist": "^1.2.3",
    +        "mkdirp-classic": "^0.5.3",
    +        "napi-build-utils": "^1.0.1",
    +        "node-abi": "^3.3.0",
    +        "pump": "^3.0.0",
    +        "rc": "^1.2.7",
    +        "simple-get": "^4.0.0",
    +        "tar-fs": "^2.0.0",
    +        "tunnel-agent": "^0.6.0"
    +      },
    +      "bin": {
    +        "prebuild-install": "bin.js"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/prebuild-install/node_modules/readable-stream": {
    +      "version": "3.6.2",
    +      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
    +      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
    +      "peer": true,
    +      "dependencies": {
    +        "inherits": "^2.0.3",
    +        "string_decoder": "^1.1.1",
    +        "util-deprecate": "^1.0.1"
    +      },
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/prebuild-install/node_modules/tar-fs": {
    +      "version": "2.1.1",
    +      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
    +      "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
    +      "peer": true,
    +      "dependencies": {
    +        "chownr": "^1.1.1",
    +        "mkdirp-classic": "^0.5.2",
    +        "pump": "^3.0.0",
    +        "tar-stream": "^2.1.4"
    +      }
    +    },
    +    "node_modules/prebuild-install/node_modules/tar-stream": {
    +      "version": "2.2.0",
    +      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
    +      "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "bl": "^4.0.3",
    +        "end-of-stream": "^1.4.1",
    +        "fs-constants": "^1.0.0",
    +        "inherits": "^2.0.3",
    +        "readable-stream": "^3.1.1"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/prelude-ls": {
    +      "version": "1.2.1",
    +      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
    +      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8.0"
    +      }
    +    },
    +    "node_modules/pretty-error": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
    +      "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
    +      "peer": true,
    +      "dependencies": {
    +        "lodash": "^4.17.20",
    +        "renderkid": "^3.0.0"
    +      }
    +    },
    +    "node_modules/pretty-format": {
    +      "version": "27.5.1",
    +      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
    +      "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "ansi-regex": "^5.0.1",
    +        "ansi-styles": "^5.0.0",
    +        "react-is": "^17.0.1"
    +      },
    +      "engines": {
    +        "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
    +      }
    +    },
    +    "node_modules/pretty-format/node_modules/ansi-styles": {
    +      "version": "5.2.0",
    +      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
    +      "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
    +      }
    +    },
    +    "node_modules/pretty-format/node_modules/react-is": {
    +      "version": "17.0.2",
    +      "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
    +      "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
    +      "peer": true
    +    },
    +    "node_modules/process-nextick-args": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
    +      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
    +      "peer": true
    +    },
    +    "node_modules/prompts": {
    +      "version": "2.4.2",
    +      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
    +      "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "kleur": "^3.0.3",
    +        "sisteransi": "^1.0.5"
    +      },
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/prop-types": {
    +      "version": "15.8.1",
    +      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
    +      "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
    +      "dependencies": {
    +        "loose-envify": "^1.4.0",
    +        "object-assign": "^4.1.1",
    +        "react-is": "^16.13.1"
    +      }
    +    },
    +    "node_modules/prop-types-extra": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz",
    +      "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==",
    +      "dependencies": {
    +        "react-is": "^16.3.2",
    +        "warning": "^4.0.0"
    +      },
    +      "peerDependencies": {
    +        "react": ">=0.14.0"
    +      }
    +    },
    +    "node_modules/proxy-addr": {
    +      "version": "2.0.7",
    +      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
    +      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
    +      "peer": true,
    +      "dependencies": {
    +        "forwarded": "0.2.0",
    +        "ipaddr.js": "1.9.1"
    +      },
    +      "engines": {
    +        "node": ">= 0.10"
    +      }
    +    },
    +    "node_modules/psl": {
    +      "version": "1.9.0",
    +      "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
    +      "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
    +      "peer": true
    +    },
    +    "node_modules/pubsub-js": {
    +      "version": "1.9.4",
    +      "resolved": "https://registry.npmjs.org/pubsub-js/-/pubsub-js-1.9.4.tgz",
    +      "integrity": "sha512-hJYpaDvPH4w8ZX/0Fdf9ma1AwRgU353GfbaVfPjfJQf1KxZ2iHaHl3fAUw1qlJIR5dr4F3RzjGaWohYUEyoh7A=="
    +    },
    +    "node_modules/pump": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
    +      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
    +      "peer": true,
    +      "dependencies": {
    +        "end-of-stream": "^1.1.0",
    +        "once": "^1.3.1"
    +      }
    +    },
    +    "node_modules/punycode": {
    +      "version": "2.3.0",
    +      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
    +      "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/purgecss": {
    +      "version": "5.0.0",
    +      "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-5.0.0.tgz",
    +      "integrity": "sha512-RAnuxrGuVyLLTr8uMbKaxDRGWMgK5CCYDfRyUNNcaz5P3kGgD2b7ymQGYEyo2ST7Tl/ScwFgf5l3slKMxHSbrw==",
    +      "peer": true,
    +      "dependencies": {
    +        "commander": "^9.0.0",
    +        "glob": "^8.0.3",
    +        "postcss": "^8.4.4",
    +        "postcss-selector-parser": "^6.0.7"
    +      },
    +      "bin": {
    +        "purgecss": "bin/purgecss.js"
    +      }
    +    },
    +    "node_modules/purgecss/node_modules/commander": {
    +      "version": "9.5.0",
    +      "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
    +      "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": "^12.20.0 || >=14"
    +      }
    +    },
    +    "node_modules/qs": {
    +      "version": "6.11.0",
    +      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
    +      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "side-channel": "^1.0.4"
    +      },
    +      "engines": {
    +        "node": ">=0.6"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/query-string": {
    +      "version": "7.0.1",
    +      "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz",
    +      "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==",
    +      "dependencies": {
    +        "decode-uri-component": "^0.2.0",
    +        "filter-obj": "^1.1.0",
    +        "split-on-first": "^1.0.0",
    +        "strict-uri-encode": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/querystringify": {
    +      "version": "2.2.0",
    +      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
    +      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
    +      "peer": true
    +    },
    +    "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==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/feross"
    +        },
    +        {
    +          "type": "patreon",
    +          "url": "https://www.patreon.com/feross"
    +        },
    +        {
    +          "type": "consulting",
    +          "url": "https://feross.org/support"
    +        }
    +      ],
    +      "peer": true
    +    },
    +    "node_modules/queue-tick": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
    +      "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
    +      "peer": true
    +    },
    +    "node_modules/randombytes": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
    +      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "safe-buffer": "^5.1.0"
    +      }
    +    },
    +    "node_modules/range-parser": {
    +      "version": "1.2.1",
    +      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
    +      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/raw-body": {
    +      "version": "2.5.1",
    +      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
    +      "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
    +      "peer": true,
    +      "dependencies": {
    +        "bytes": "3.1.2",
    +        "http-errors": "2.0.0",
    +        "iconv-lite": "0.4.24",
    +        "unpipe": "1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/rc": {
    +      "version": "1.2.8",
    +      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
    +      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
    +      "peer": true,
    +      "dependencies": {
    +        "deep-extend": "^0.6.0",
    +        "ini": "~1.3.0",
    +        "minimist": "^1.2.0",
    +        "strip-json-comments": "~2.0.1"
    +      },
    +      "bin": {
    +        "rc": "cli.js"
    +      }
    +    },
    +    "node_modules/rc/node_modules/strip-json-comments": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
    +      "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/react": {
    +      "version": "17.0.2",
    +      "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
    +      "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
    +      "dependencies": {
    +        "loose-envify": "^1.1.0",
    +        "object-assign": "^4.1.1"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/react-bootstrap": {
    +      "version": "1.6.7",
    +      "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.6.7.tgz",
    +      "integrity": "sha512-IzCYXuLSKDEjGFglbFWk0/iHmdhdcJzTmtS6lXxc0kaNFx2PFgrQf5jKnx5sarF2tiXh9Tgx3pSt3pdK7YwkMA==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.14.0",
    +        "@restart/context": "^2.1.4",
    +        "@restart/hooks": "^0.4.7",
    +        "@types/invariant": "^2.2.33",
    +        "@types/prop-types": "^15.7.3",
    +        "@types/react": ">=16.14.8",
    +        "@types/react-transition-group": "^4.4.1",
    +        "@types/warning": "^3.0.0",
    +        "classnames": "^2.3.1",
    +        "dom-helpers": "^5.2.1",
    +        "invariant": "^2.2.4",
    +        "prop-types": "^15.7.2",
    +        "prop-types-extra": "^1.1.0",
    +        "react-overlays": "^5.1.2",
    +        "react-transition-group": "^4.4.1",
    +        "uncontrollable": "^7.2.1",
    +        "warning": "^4.0.3"
    +      },
    +      "peerDependencies": {
    +        "react": ">=16.8.0",
    +        "react-dom": ">=16.8.0"
    +      }
    +    },
    +    "node_modules/react-clientside-effect": {
    +      "version": "1.2.6",
    +      "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz",
    +      "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.12.13"
    +      },
    +      "peerDependencies": {
    +        "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
    +      }
    +    },
    +    "node_modules/react-colorful": {
    +      "version": "5.6.1",
    +      "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz",
    +      "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==",
    +      "peerDependencies": {
    +        "react": ">=16.8.0",
    +        "react-dom": ">=16.8.0"
    +      }
    +    },
    +    "node_modules/react-dev-utils": {
    +      "version": "12.0.1",
    +      "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz",
    +      "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/code-frame": "^7.16.0",
    +        "address": "^1.1.2",
    +        "browserslist": "^4.18.1",
    +        "chalk": "^4.1.2",
    +        "cross-spawn": "^7.0.3",
    +        "detect-port-alt": "^1.1.6",
    +        "escape-string-regexp": "^4.0.0",
    +        "filesize": "^8.0.6",
    +        "find-up": "^5.0.0",
    +        "fork-ts-checker-webpack-plugin": "^6.5.0",
    +        "global-modules": "^2.0.0",
    +        "globby": "^11.0.4",
    +        "gzip-size": "^6.0.0",
    +        "immer": "^9.0.7",
    +        "is-root": "^2.1.0",
    +        "loader-utils": "^3.2.0",
    +        "open": "^8.4.0",
    +        "pkg-up": "^3.1.0",
    +        "prompts": "^2.4.2",
    +        "react-error-overlay": "^6.0.11",
    +        "recursive-readdir": "^2.2.2",
    +        "shell-quote": "^1.7.3",
    +        "strip-ansi": "^6.0.1",
    +        "text-table": "^0.2.0"
    +      },
    +      "engines": {
    +        "node": ">=14"
    +      }
    +    },
    +    "node_modules/react-dev-utils/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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/react-dev-utils/node_modules/globby": {
    +      "version": "11.1.0",
    +      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
    +      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
    +      "peer": true,
    +      "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/react-dev-utils/node_modules/loader-utils": {
    +      "version": "3.2.1",
    +      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz",
    +      "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 12.13.0"
    +      }
    +    },
    +    "node_modules/react-dev-utils/node_modules/slash": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
    +      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/react-dom": {
    +      "version": "17.0.2",
    +      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
    +      "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
    +      "dependencies": {
    +        "loose-envify": "^1.1.0",
    +        "object-assign": "^4.1.1",
    +        "scheduler": "^0.20.2"
    +      },
    +      "peerDependencies": {
    +        "react": "17.0.2"
    +      }
    +    },
    +    "node_modules/react-dropzone": {
    +      "version": "14.2.3",
    +      "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz",
    +      "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==",
    +      "dependencies": {
    +        "attr-accept": "^2.2.2",
    +        "file-selector": "^0.6.0",
    +        "prop-types": "^15.8.1"
    +      },
    +      "engines": {
    +        "node": ">= 10.13"
    +      },
    +      "peerDependencies": {
    +        "react": ">= 16.8 || 18.0.0"
    +      }
    +    },
    +    "node_modules/react-error-overlay": {
    +      "version": "6.0.11",
    +      "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
    +      "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==",
    +      "peer": true
    +    },
    +    "node_modules/react-fast-compare": {
    +      "version": "3.2.2",
    +      "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
    +      "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
    +    },
    +    "node_modules/react-focus-lock": {
    +      "version": "2.9.4",
    +      "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.4.tgz",
    +      "integrity": "sha512-7pEdXyMseqm3kVjhdVH18sovparAzLg5h6WvIx7/Ck3ekjhrrDMEegHSa3swwC8wgfdd7DIdUVRGeiHT9/7Sgg==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.0.0",
    +        "focus-lock": "^0.11.6",
    +        "prop-types": "^15.6.2",
    +        "react-clientside-effect": "^1.2.6",
    +        "use-callback-ref": "^1.3.0",
    +        "use-sidecar": "^1.1.2"
    +      },
    +      "peerDependencies": {
    +        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
    +        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "@types/react": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/react-focus-on": {
    +      "version": "3.8.1",
    +      "resolved": "https://registry.npmjs.org/react-focus-on/-/react-focus-on-3.8.1.tgz",
    +      "integrity": "sha512-fQcBx+SZMgXoRL+69r5+ic4bdVgqaCeKeoFPra8yhcSuL/3unWavfdirEFBGgH71K+RiocMTS6DETHcX0SlOZg==",
    +      "dependencies": {
    +        "aria-hidden": "^1.2.2",
    +        "react-focus-lock": "^2.9.2",
    +        "react-remove-scroll": "^2.5.6",
    +        "react-style-singleton": "^2.2.0",
    +        "tslib": "^2.3.1",
    +        "use-callback-ref": "^1.3.0",
    +        "use-sidecar": "^1.1.2"
    +      },
    +      "engines": {
    +        "node": ">=8.5.0"
    +      },
    +      "peerDependencies": {
    +        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
    +        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "@types/react": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/react-intl": {
    +      "version": "5.25.1",
    +      "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.25.1.tgz",
    +      "integrity": "sha512-pkjdQDvpJROoXLMltkP/5mZb0/XqrqLoPGKUCfbdkP8m6U9xbK40K51Wu+a4aQqTEvEK5lHBk0fWzUV72SJ3Hg==",
    +      "dependencies": {
    +        "@formatjs/ecma402-abstract": "1.11.4",
    +        "@formatjs/icu-messageformat-parser": "2.1.0",
    +        "@formatjs/intl": "2.2.1",
    +        "@formatjs/intl-displaynames": "5.4.3",
    +        "@formatjs/intl-listformat": "6.5.3",
    +        "@types/hoist-non-react-statics": "^3.3.1",
    +        "@types/react": "16 || 17 || 18",
    +        "hoist-non-react-statics": "^3.3.2",
    +        "intl-messageformat": "9.13.0",
    +        "tslib": "^2.1.0"
    +      },
    +      "peerDependencies": {
    +        "react": "^16.3.0 || 17 || 18",
    +        "typescript": "^4.5"
    +      },
    +      "peerDependenciesMeta": {
    +        "typescript": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/react-is": {
    +      "version": "16.13.1",
    +      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
           "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
         },
    -    "node_modules/react-lifecycles-compat": {
    -      "version": "3.0.4",
    -      "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
    -      "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
    +    "node_modules/react-lifecycles-compat": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
    +      "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
    +    },
    +    "node_modules/react-loading-skeleton": {
    +      "version": "3.3.1",
    +      "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.3.1.tgz",
    +      "integrity": "sha512-NilqqwMh2v9omN7LteiDloEVpFyMIa0VGqF+ukqp0ncVlYu1sKYbYGX9JEl+GtOT9TKsh04zCHAbavnQ2USldA==",
    +      "peerDependencies": {
    +        "react": ">=16.8.0"
    +      }
    +    },
    +    "node_modules/react-overlays": {
    +      "version": "5.2.1",
    +      "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz",
    +      "integrity": "sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.13.8",
    +        "@popperjs/core": "^2.11.6",
    +        "@restart/hooks": "^0.4.7",
    +        "@types/warning": "^3.0.0",
    +        "dom-helpers": "^5.2.0",
    +        "prop-types": "^15.7.2",
    +        "uncontrollable": "^7.2.1",
    +        "warning": "^4.0.3"
    +      },
    +      "peerDependencies": {
    +        "react": ">=16.3.0",
    +        "react-dom": ">=16.3.0"
    +      }
    +    },
    +    "node_modules/react-popper": {
    +      "version": "2.3.0",
    +      "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz",
    +      "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==",
    +      "dependencies": {
    +        "react-fast-compare": "^3.0.1",
    +        "warning": "^4.0.2"
    +      },
    +      "peerDependencies": {
    +        "@popperjs/core": "^2.0.0",
    +        "react": "^16.8.0 || ^17 || ^18",
    +        "react-dom": "^16.8.0 || ^17 || ^18"
    +      }
    +    },
    +    "node_modules/react-proptype-conditional-require": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz",
    +      "integrity": "sha512-nopsRn7KnGgazBe2c3H2+Kf+Csp6PGDRLiBkYEDMKY8o/EIgft/WnIm/OnAKTawZiLnJXHAqhpFBddvs6NiXlw=="
    +    },
    +    "node_modules/react-redux": {
    +      "version": "7.2.9",
    +      "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz",
    +      "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.15.4",
    +        "@types/react-redux": "^7.1.20",
    +        "hoist-non-react-statics": "^3.3.2",
    +        "loose-envify": "^1.4.0",
    +        "prop-types": "^15.7.2",
    +        "react-is": "^17.0.2"
    +      },
    +      "peerDependencies": {
    +        "react": "^16.8.3 || ^17 || ^18"
    +      },
    +      "peerDependenciesMeta": {
    +        "react-dom": {
    +          "optional": true
    +        },
    +        "react-native": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/react-redux/node_modules/react-is": {
    +      "version": "17.0.2",
    +      "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
    +      "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
    +    },
    +    "node_modules/react-refresh": {
    +      "version": "0.14.0",
    +      "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
    +      "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/react-remove-scroll": {
    +      "version": "2.5.6",
    +      "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz",
    +      "integrity": "sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==",
    +      "dependencies": {
    +        "react-remove-scroll-bar": "^2.3.4",
    +        "react-style-singleton": "^2.2.1",
    +        "tslib": "^2.1.0",
    +        "use-callback-ref": "^1.3.0",
    +        "use-sidecar": "^1.1.2"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "peerDependencies": {
    +        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
    +        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "@types/react": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/react-remove-scroll-bar": {
    +      "version": "2.3.4",
    +      "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz",
    +      "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==",
    +      "dependencies": {
    +        "react-style-singleton": "^2.2.1",
    +        "tslib": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "peerDependencies": {
    +        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
    +        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "@types/react": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/react-responsive": {
    +      "version": "8.2.0",
    +      "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-8.2.0.tgz",
    +      "integrity": "sha512-iagCqVrw4QSjhxKp3I/YK6+ODkWY6G+YPElvdYKiUUbywwh9Ds0M7r26Fj2/7dWFFbOpcGnJE6uE7aMck8j5Qg==",
    +      "dependencies": {
    +        "hyphenate-style-name": "^1.0.0",
    +        "matchmediaquery": "^0.3.0",
    +        "prop-types": "^15.6.1",
    +        "shallow-equal": "^1.1.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.10"
    +      },
    +      "peerDependencies": {
    +        "react": ">=16.8.0"
    +      }
    +    },
    +    "node_modules/react-router": {
    +      "version": "5.3.4",
    +      "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
    +      "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.12.13",
    +        "history": "^4.9.0",
    +        "hoist-non-react-statics": "^3.1.0",
    +        "loose-envify": "^1.3.1",
    +        "path-to-regexp": "^1.7.0",
    +        "prop-types": "^15.6.2",
    +        "react-is": "^16.6.0",
    +        "tiny-invariant": "^1.0.2",
    +        "tiny-warning": "^1.0.0"
    +      },
    +      "peerDependencies": {
    +        "react": ">=15"
    +      }
    +    },
    +    "node_modules/react-router-dom": {
    +      "version": "5.3.4",
    +      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz",
    +      "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.12.13",
    +        "history": "^4.9.0",
    +        "loose-envify": "^1.3.1",
    +        "prop-types": "^15.6.2",
    +        "react-router": "5.3.4",
    +        "tiny-invariant": "^1.0.2",
    +        "tiny-warning": "^1.0.0"
    +      },
    +      "peerDependencies": {
    +        "react": ">=15"
    +      }
    +    },
    +    "node_modules/react-shallow-renderer": {
    +      "version": "16.15.0",
    +      "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz",
    +      "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==",
    +      "dev": true,
    +      "dependencies": {
    +        "object-assign": "^4.1.1",
    +        "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0"
    +      },
    +      "peerDependencies": {
    +        "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
    +      }
    +    },
    +    "node_modules/react-style-singleton": {
    +      "version": "2.2.1",
    +      "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
    +      "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
    +      "dependencies": {
    +        "get-nonce": "^1.0.0",
    +        "invariant": "^2.2.4",
    +        "tslib": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "peerDependencies": {
    +        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
    +        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "@types/react": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/react-table": {
    +      "version": "7.8.0",
    +      "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.8.0.tgz",
    +      "integrity": "sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==",
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/tannerlinsley"
    +      },
    +      "peerDependencies": {
    +        "react": "^16.8.3 || ^17.0.0-0 || ^18.0.0"
    +      }
    +    },
    +    "node_modules/react-test-renderer": {
    +      "version": "17.0.2",
    +      "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz",
    +      "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==",
    +      "dev": true,
    +      "dependencies": {
    +        "object-assign": "^4.1.1",
    +        "react-is": "^17.0.2",
    +        "react-shallow-renderer": "^16.13.1",
    +        "scheduler": "^0.20.2"
    +      },
    +      "peerDependencies": {
    +        "react": "17.0.2"
    +      }
    +    },
    +    "node_modules/react-test-renderer/node_modules/react-is": {
    +      "version": "17.0.2",
    +      "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
    +      "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
    +      "dev": true
    +    },
    +    "node_modules/react-transition-group": {
    +      "version": "4.4.5",
    +      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
    +      "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.5.5",
    +        "dom-helpers": "^5.0.1",
    +        "loose-envify": "^1.4.0",
    +        "prop-types": "^15.6.2"
    +      },
    +      "peerDependencies": {
    +        "react": ">=16.6.0",
    +        "react-dom": ">=16.6.0"
    +      }
    +    },
    +    "node_modules/readable-stream": {
    +      "version": "2.3.8",
    +      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
    +      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
    +      "peer": true,
    +      "dependencies": {
    +        "core-util-is": "~1.0.0",
    +        "inherits": "~2.0.3",
    +        "isarray": "~1.0.0",
    +        "process-nextick-args": "~2.0.0",
    +        "safe-buffer": "~5.1.1",
    +        "string_decoder": "~1.1.1",
    +        "util-deprecate": "~1.0.1"
    +      }
    +    },
    +    "node_modules/readable-stream/node_modules/isarray": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
    +      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
    +      "peer": true
    +    },
    +    "node_modules/readable-stream/node_modules/safe-buffer": {
    +      "version": "5.1.2",
    +      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
    +      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
    +      "peer": true
    +    },
    +    "node_modules/readdirp": {
    +      "version": "3.6.0",
    +      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
    +      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
    +      "peer": true,
    +      "dependencies": {
    +        "picomatch": "^2.2.1"
    +      },
    +      "engines": {
    +        "node": ">=8.10.0"
    +      }
    +    },
    +    "node_modules/rechoir": {
    +      "version": "0.8.0",
    +      "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
    +      "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "resolve": "^1.20.0"
    +      },
    +      "engines": {
    +        "node": ">= 10.13.0"
    +      }
    +    },
    +    "node_modules/recursive-readdir": {
    +      "version": "2.2.3",
    +      "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
    +      "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
    +      "peer": true,
    +      "dependencies": {
    +        "minimatch": "^3.0.5"
    +      },
    +      "engines": {
    +        "node": ">=6.0.0"
    +      }
    +    },
    +    "node_modules/recursive-readdir/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/recursive-readdir/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/redux": {
    +      "version": "4.2.1",
    +      "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
    +      "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.9.2"
    +      }
    +    },
    +    "node_modules/regenerate": {
    +      "version": "1.4.2",
    +      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
    +      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
    +      "peer": true
    +    },
    +    "node_modules/regenerate-unicode-properties": {
    +      "version": "10.1.0",
    +      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
    +      "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "regenerate": "^1.4.2"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/regenerator-runtime": {
    +      "version": "0.13.11",
    +      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
    +      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
    +    },
    +    "node_modules/regenerator-transform": {
    +      "version": "0.15.1",
    +      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
    +      "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/runtime": "^7.8.4"
    +      }
    +    },
    +    "node_modules/regex-parser": {
    +      "version": "2.2.11",
    +      "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz",
    +      "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==",
    +      "peer": true
    +    },
    +    "node_modules/regexp.prototype.flags": {
    +      "version": "1.5.0",
    +      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz",
    +      "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.2.0",
    +        "functions-have-names": "^1.2.3"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/regexpu-core": {
    +      "version": "5.3.2",
    +      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
    +      "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@babel/regjsgen": "^0.8.0",
    +        "regenerate": "^1.4.2",
    +        "regenerate-unicode-properties": "^10.1.0",
    +        "regjsparser": "^0.9.1",
    +        "unicode-match-property-ecmascript": "^2.0.0",
    +        "unicode-match-property-value-ecmascript": "^2.1.0"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/regjsparser": {
    +      "version": "0.9.1",
    +      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
    +      "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "jsesc": "~0.5.0"
    +      },
    +      "bin": {
    +        "regjsparser": "bin/parser"
    +      }
    +    },
    +    "node_modules/regjsparser/node_modules/jsesc": {
    +      "version": "0.5.0",
    +      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
    +      "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
    +      "peer": true,
    +      "bin": {
    +        "jsesc": "bin/jsesc"
    +      }
    +    },
    +    "node_modules/relateurl": {
    +      "version": "0.2.7",
    +      "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
    +      "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.10"
    +      }
    +    },
    +    "node_modules/renderkid": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
    +      "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
    +      "peer": true,
    +      "dependencies": {
    +        "css-select": "^4.1.3",
    +        "dom-converter": "^0.2.0",
    +        "htmlparser2": "^6.1.0",
    +        "lodash": "^4.17.21",
    +        "strip-ansi": "^6.0.1"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/requires-port": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
    +      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
    +      "peer": true
    +    },
    +    "node_modules/resolve": {
    +      "version": "1.22.2",
    +      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
    +      "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-core-module": "^2.11.0",
    +        "path-parse": "^1.0.7",
    +        "supports-preserve-symlinks-flag": "^1.0.0"
    +      },
    +      "bin": {
    +        "resolve": "bin/resolve"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/resolve-cwd": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
    +      "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
    +      "peer": true,
    +      "dependencies": {
    +        "resolve-from": "^5.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/resolve-pathname": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
    +      "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
    +    },
    +    "node_modules/resolve-url-loader": {
    +      "version": "5.0.0",
    +      "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz",
    +      "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==",
    +      "peer": true,
    +      "dependencies": {
    +        "adjust-sourcemap-loader": "^4.0.0",
    +        "convert-source-map": "^1.7.0",
    +        "loader-utils": "^2.0.0",
    +        "postcss": "^8.2.14",
    +        "source-map": "0.6.1"
    +      },
    +      "engines": {
    +        "node": ">=12"
    +      }
    +    },
    +    "node_modules/resolve-url-loader/node_modules/source-map": {
    +      "version": "0.6.1",
    +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    +      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/resolve.exports": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz",
    +      "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/retry": {
    +      "version": "0.13.1",
    +      "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
    +      "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 4"
    +      }
    +    },
    +    "node_modules/reusify": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
    +      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
    +      "peer": true,
    +      "engines": {
    +        "iojs": ">=1.0.0",
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/rimraf": {
    +      "version": "2.7.1",
    +      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
    +      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
    +      "peer": true,
    +      "dependencies": {
    +        "glob": "^7.1.3"
    +      },
    +      "bin": {
    +        "rimraf": "bin.js"
    +      }
    +    },
    +    "node_modules/rimraf/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/rimraf/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/rimraf/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/rtlcss": {
    +      "version": "4.1.0",
    +      "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.1.0.tgz",
    +      "integrity": "sha512-W+N4hh0nVqVrrn3mRkHakxpB+c9cQ4CRT67O39kgA+1DjyhrdsqyCqIuHXyvWaXn4/835n+oX3fYJCi4+G/06A==",
    +      "peer": true,
    +      "dependencies": {
    +        "escalade": "^3.1.1",
    +        "picocolors": "^1.0.0",
    +        "postcss": "^8.4.21",
    +        "strip-json-comments": "^3.1.1"
    +      },
    +      "bin": {
    +        "rtlcss": "bin/rtlcss.js"
    +      },
    +      "engines": {
    +        "node": ">=12.0.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==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/feross"
    +        },
    +        {
    +          "type": "patreon",
    +          "url": "https://www.patreon.com/feross"
    +        },
    +        {
    +          "type": "consulting",
    +          "url": "https://feross.org/support"
    +        }
    +      ],
    +      "peer": true,
    +      "dependencies": {
    +        "queue-microtask": "^1.2.2"
    +      }
    +    },
    +    "node_modules/safe-array-concat": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz",
    +      "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "get-intrinsic": "^1.2.0",
    +        "has-symbols": "^1.0.3",
    +        "isarray": "^2.0.5"
    +      },
    +      "engines": {
    +        "node": ">=0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/safe-array-concat/node_modules/isarray": {
    +      "version": "2.0.5",
    +      "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
    +      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
    +      "peer": true
    +    },
    +    "node_modules/safe-buffer": {
    +      "version": "5.2.1",
    +      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
    +      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/feross"
    +        },
    +        {
    +          "type": "patreon",
    +          "url": "https://www.patreon.com/feross"
    +        },
    +        {
    +          "type": "consulting",
    +          "url": "https://feross.org/support"
    +        }
    +      ],
    +      "peer": true
    +    },
    +    "node_modules/safe-regex-test": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
    +      "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "get-intrinsic": "^1.1.3",
    +        "is-regex": "^1.1.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/safer-buffer": {
    +      "version": "2.1.2",
    +      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
    +      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
    +      "peer": true
    +    },
    +    "node_modules/sass": {
    +      "version": "1.63.6",
    +      "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.6.tgz",
    +      "integrity": "sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==",
    +      "peer": true,
    +      "dependencies": {
    +        "chokidar": ">=3.0.0 <4.0.0",
    +        "immutable": "^4.0.0",
    +        "source-map-js": ">=0.6.2 <2.0.0"
    +      },
    +      "bin": {
    +        "sass": "sass.js"
    +      },
    +      "engines": {
    +        "node": ">=14.0.0"
    +      }
    +    },
    +    "node_modules/sass-loader": {
    +      "version": "13.3.2",
    +      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz",
    +      "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==",
    +      "peer": true,
    +      "dependencies": {
    +        "neo-async": "^2.6.2"
    +      },
    +      "engines": {
    +        "node": ">= 14.15.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "fibers": ">= 3.1.0",
    +        "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
    +        "sass": "^1.3.0",
    +        "sass-embedded": "*",
    +        "webpack": "^5.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "fibers": {
    +          "optional": true
    +        },
    +        "node-sass": {
    +          "optional": true
    +        },
    +        "sass": {
    +          "optional": true
    +        },
    +        "sass-embedded": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/saxes": {
    +      "version": "5.0.1",
    +      "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
    +      "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
    +      "peer": true,
    +      "dependencies": {
    +        "xmlchars": "^2.2.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/scheduler": {
    +      "version": "0.20.2",
    +      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
    +      "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
    +      "dependencies": {
    +        "loose-envify": "^1.1.0",
    +        "object-assign": "^4.1.1"
    +      }
    +    },
    +    "node_modules/schema-utils": {
    +      "version": "3.3.0",
    +      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
    +      "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/json-schema": "^7.0.8",
    +        "ajv": "^6.12.5",
    +        "ajv-keywords": "^3.5.2"
    +      },
    +      "engines": {
    +        "node": ">= 10.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      }
    +    },
    +    "node_modules/select-hose": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
    +      "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
    +      "peer": true
    +    },
    +    "node_modules/selfsigned": {
    +      "version": "2.1.1",
    +      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz",
    +      "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "node-forge": "^1"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/semver": {
    +      "version": "6.3.1",
    +      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
    +      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
    +      "peer": true,
    +      "bin": {
    +        "semver": "bin/semver.js"
    +      }
    +    },
    +    "node_modules/send": {
    +      "version": "0.18.0",
    +      "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
    +      "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
    +      "peer": true,
    +      "dependencies": {
    +        "debug": "2.6.9",
    +        "depd": "2.0.0",
    +        "destroy": "1.2.0",
    +        "encodeurl": "~1.0.2",
    +        "escape-html": "~1.0.3",
    +        "etag": "~1.8.1",
    +        "fresh": "0.5.2",
    +        "http-errors": "2.0.0",
    +        "mime": "1.6.0",
    +        "ms": "2.1.3",
    +        "on-finished": "2.4.1",
    +        "range-parser": "~1.2.1",
    +        "statuses": "2.0.1"
    +      },
    +      "engines": {
    +        "node": ">= 0.8.0"
    +      }
    +    },
    +    "node_modules/send/node_modules/debug": {
    +      "version": "2.6.9",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
    +      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "2.0.0"
    +      }
    +    },
    +    "node_modules/send/node_modules/debug/node_modules/ms": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
    +      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
    +      "peer": true
    +    },
    +    "node_modules/send/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==",
    +      "peer": true
    +    },
    +    "node_modules/serialize-javascript": {
    +      "version": "6.0.1",
    +      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
    +      "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
    +      "peer": true,
    +      "dependencies": {
    +        "randombytes": "^2.1.0"
    +      }
    +    },
    +    "node_modules/serve-index": {
    +      "version": "1.9.1",
    +      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
    +      "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
    +      "peer": true,
    +      "dependencies": {
    +        "accepts": "~1.3.4",
    +        "batch": "0.6.1",
    +        "debug": "2.6.9",
    +        "escape-html": "~1.0.3",
    +        "http-errors": "~1.6.2",
    +        "mime-types": "~2.1.17",
    +        "parseurl": "~1.3.2"
    +      },
    +      "engines": {
    +        "node": ">= 0.8.0"
    +      }
    +    },
    +    "node_modules/serve-index/node_modules/debug": {
    +      "version": "2.6.9",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
    +      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "2.0.0"
    +      }
    +    },
    +    "node_modules/serve-index/node_modules/depd": {
    +      "version": "1.1.2",
    +      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
    +      "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/serve-index/node_modules/http-errors": {
    +      "version": "1.6.3",
    +      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
    +      "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
    +      "peer": true,
    +      "dependencies": {
    +        "depd": "~1.1.2",
    +        "inherits": "2.0.3",
    +        "setprototypeof": "1.1.0",
    +        "statuses": ">= 1.4.0 < 2"
    +      },
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/serve-index/node_modules/inherits": {
    +      "version": "2.0.3",
    +      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
    +      "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
    +      "peer": true
    +    },
    +    "node_modules/serve-index/node_modules/ms": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
    +      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
    +      "peer": true
    +    },
    +    "node_modules/serve-index/node_modules/setprototypeof": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
    +      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
    +      "peer": true
    +    },
    +    "node_modules/serve-index/node_modules/statuses": {
    +      "version": "1.5.0",
    +      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
    +      "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/serve-static": {
    +      "version": "1.15.0",
    +      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
    +      "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
    +      "peer": true,
    +      "dependencies": {
    +        "encodeurl": "~1.0.2",
    +        "escape-html": "~1.0.3",
    +        "parseurl": "~1.3.3",
    +        "send": "0.18.0"
    +      },
    +      "engines": {
    +        "node": ">= 0.8.0"
    +      }
    +    },
    +    "node_modules/setprototypeof": {
    +      "version": "1.2.0",
    +      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
    +      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
    +      "peer": true
    +    },
    +    "node_modules/shallow-clone": {
    +      "version": "3.0.1",
    +      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
    +      "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
    +      "peer": true,
    +      "dependencies": {
    +        "kind-of": "^6.0.2"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/shallow-equal": {
    +      "version": "1.2.1",
    +      "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
    +      "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
    +    },
    +    "node_modules/sharp": {
    +      "version": "0.32.3",
    +      "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.3.tgz",
    +      "integrity": "sha512-i1gFPiNqyqxC4ouVvCKj5G8WfPIMeeSxpKcMrjic6NY4e8zktW7bIdqHPc3FCG+pNKU/XCEabKA57hhvZi8UmQ==",
    +      "hasInstallScript": true,
    +      "peer": true,
    +      "dependencies": {
    +        "color": "^4.2.3",
    +        "detect-libc": "^2.0.1",
    +        "node-addon-api": "^6.1.0",
    +        "prebuild-install": "^7.1.1",
    +        "semver": "^7.5.4",
    +        "simple-get": "^4.0.1",
    +        "tar-fs": "^3.0.4",
    +        "tunnel-agent": "^0.6.0"
    +      },
    +      "engines": {
    +        "node": ">=14.15.0"
    +      },
    +      "funding": {
    +        "url": "https://opencollective.com/libvips"
    +      }
    +    },
    +    "node_modules/sharp/node_modules/lru-cache": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
    +      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "yallist": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/sharp/node_modules/semver": {
    +      "version": "7.5.4",
    +      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
    +      "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
    +      "peer": true,
    +      "dependencies": {
    +        "lru-cache": "^6.0.0"
    +      },
    +      "bin": {
    +        "semver": "bin/semver.js"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/sharp/node_modules/yallist": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
    +      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
    +      "peer": true
    +    },
    +    "node_modules/shebang-command": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
    +      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
    +      "peer": true,
    +      "dependencies": {
    +        "shebang-regex": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/shebang-regex": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
    +      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/shell-quote": {
    +      "version": "1.8.1",
    +      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
    +      "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
    +      "peer": true,
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/side-channel": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
    +      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.0",
    +        "get-intrinsic": "^1.0.2",
    +        "object-inspect": "^1.9.0"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/signal-exit": {
    +      "version": "3.0.7",
    +      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
    +      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
    +      "peer": true
    +    },
    +    "node_modules/simple-concat": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
    +      "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/feross"
    +        },
    +        {
    +          "type": "patreon",
    +          "url": "https://www.patreon.com/feross"
    +        },
    +        {
    +          "type": "consulting",
    +          "url": "https://feross.org/support"
    +        }
    +      ],
    +      "peer": true
    +    },
    +    "node_modules/simple-get": {
    +      "version": "4.0.1",
    +      "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
    +      "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
    +      "funding": [
    +        {
    +          "type": "github",
    +          "url": "https://github.com/sponsors/feross"
    +        },
    +        {
    +          "type": "patreon",
    +          "url": "https://www.patreon.com/feross"
    +        },
    +        {
    +          "type": "consulting",
    +          "url": "https://feross.org/support"
    +        }
    +      ],
    +      "peer": true,
    +      "dependencies": {
    +        "decompress-response": "^6.0.0",
    +        "once": "^1.3.1",
    +        "simple-concat": "^1.0.0"
    +      }
    +    },
    +    "node_modules/simple-swizzle": {
    +      "version": "0.2.2",
    +      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
    +      "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-arrayish": "^0.3.1"
    +      }
    +    },
    +    "node_modules/simple-swizzle/node_modules/is-arrayish": {
    +      "version": "0.3.2",
    +      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
    +      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
    +      "peer": true
    +    },
    +    "node_modules/sirv": {
    +      "version": "1.0.19",
    +      "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz",
    +      "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@polka/url": "^1.0.0-next.20",
    +        "mrmime": "^1.0.0",
    +        "totalist": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 10"
    +      }
    +    },
    +    "node_modules/sisteransi": {
    +      "version": "1.0.5",
    +      "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
    +      "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
    +      "peer": true
    +    },
    +    "node_modules/slash": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
    +      "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/snake-case": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
    +      "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
    +      "peer": true,
    +      "dependencies": {
    +        "dot-case": "^3.0.4",
    +        "tslib": "^2.0.3"
    +      }
    +    },
    +    "node_modules/sockjs": {
    +      "version": "0.3.24",
    +      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
    +      "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "faye-websocket": "^0.11.3",
    +        "uuid": "^8.3.2",
    +        "websocket-driver": "^0.7.4"
    +      }
    +    },
    +    "node_modules/sockjs/node_modules/uuid": {
    +      "version": "8.3.2",
    +      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
    +      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
    +      "peer": true,
    +      "bin": {
    +        "uuid": "dist/bin/uuid"
    +      }
    +    },
    +    "node_modules/source-list-map": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
    +      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
    +      "peer": true
    +    },
    +    "node_modules/source-map": {
    +      "version": "0.7.4",
    +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
    +      "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 8"
    +      }
    +    },
    +    "node_modules/source-map-js": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
    +      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/source-map-loader": {
    +      "version": "4.0.1",
    +      "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz",
    +      "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==",
    +      "peer": true,
    +      "dependencies": {
    +        "abab": "^2.0.6",
    +        "iconv-lite": "^0.6.3",
    +        "source-map-js": "^1.0.2"
    +      },
    +      "engines": {
    +        "node": ">= 14.15.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "webpack": "^5.72.1"
    +      }
    +    },
    +    "node_modules/source-map-loader/node_modules/iconv-lite": {
    +      "version": "0.6.3",
    +      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
    +      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
    +      "peer": true,
    +      "dependencies": {
    +        "safer-buffer": ">= 2.1.2 < 3.0.0"
    +      },
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/source-map-support": {
    +      "version": "0.5.21",
    +      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
    +      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
    +      "peer": true,
    +      "dependencies": {
    +        "buffer-from": "^1.0.0",
    +        "source-map": "^0.6.0"
    +      }
    +    },
    +    "node_modules/source-map-support/node_modules/source-map": {
    +      "version": "0.6.1",
    +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    +      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/spdy": {
    +      "version": "4.0.2",
    +      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
    +      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
    +      "peer": true,
    +      "dependencies": {
    +        "debug": "^4.1.0",
    +        "handle-thing": "^2.0.0",
    +        "http-deceiver": "^1.2.7",
    +        "select-hose": "^2.0.0",
    +        "spdy-transport": "^3.0.0"
    +      },
    +      "engines": {
    +        "node": ">=6.0.0"
    +      }
    +    },
    +    "node_modules/spdy-transport": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
    +      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
    +      "peer": true,
    +      "dependencies": {
    +        "debug": "^4.1.0",
    +        "detect-node": "^2.0.4",
    +        "hpack.js": "^2.1.6",
    +        "obuf": "^1.1.2",
    +        "readable-stream": "^3.0.6",
    +        "wbuf": "^1.7.3"
    +      }
    +    },
    +    "node_modules/spdy-transport/node_modules/readable-stream": {
    +      "version": "3.6.2",
    +      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
    +      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
    +      "peer": true,
    +      "dependencies": {
    +        "inherits": "^2.0.3",
    +        "string_decoder": "^1.1.1",
    +        "util-deprecate": "^1.0.1"
    +      },
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/split-on-first": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
    +      "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/sprintf-js": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
    +      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
    +      "peer": true
    +    },
    +    "node_modules/stack-utils": {
    +      "version": "2.0.6",
    +      "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
    +      "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "escape-string-regexp": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/stack-utils/node_modules/escape-string-regexp": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
    +      "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/stackframe": {
    +      "version": "1.3.4",
    +      "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
    +      "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
    +      "peer": true
    +    },
    +    "node_modules/statuses": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
    +      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/streamx": {
    +      "version": "2.15.0",
    +      "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz",
    +      "integrity": "sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==",
    +      "peer": true,
    +      "dependencies": {
    +        "fast-fifo": "^1.1.0",
    +        "queue-tick": "^1.0.1"
    +      }
    +    },
    +    "node_modules/strict-uri-encode": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
    +      "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==",
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/string_decoder": {
    +      "version": "1.1.1",
    +      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
    +      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
    +      "peer": true,
    +      "dependencies": {
    +        "safe-buffer": "~5.1.0"
    +      }
    +    },
    +    "node_modules/string_decoder/node_modules/safe-buffer": {
    +      "version": "5.1.2",
    +      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
    +      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
    +      "peer": true
    +    },
    +    "node_modules/string-length": {
    +      "version": "4.0.2",
    +      "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
    +      "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "char-regex": "^1.0.2",
    +        "strip-ansi": "^6.0.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "emoji-regex": "^8.0.0",
    +        "is-fullwidth-code-point": "^3.0.0",
    +        "strip-ansi": "^6.0.1"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/string-width/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==",
    +      "peer": true
    +    },
    +    "node_modules/string.prototype.matchall": {
    +      "version": "4.0.8",
    +      "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz",
    +      "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4",
    +        "get-intrinsic": "^1.1.3",
    +        "has-symbols": "^1.0.3",
    +        "internal-slot": "^1.0.3",
    +        "regexp.prototype.flags": "^1.4.3",
    +        "side-channel": "^1.0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/string.prototype.trim": {
    +      "version": "1.2.7",
    +      "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
    +      "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/string.prototype.trimend": {
    +      "version": "1.0.6",
    +      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
    +      "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/string.prototype.trimstart": {
    +      "version": "1.0.6",
    +      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
    +      "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "define-properties": "^1.1.4",
    +        "es-abstract": "^1.20.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "ansi-regex": "^5.0.1"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/strip-bom": {
    +      "version": "4.0.0",
    +      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
    +      "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/strip-final-newline": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
    +      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/strip-json-comments": {
    +      "version": "3.1.1",
    +      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
    +      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/style-loader": {
    +      "version": "3.3.3",
    +      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz",
    +      "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 12.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "webpack": "^5.0.0"
    +      }
    +    },
    +    "node_modules/stylehacks": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz",
    +      "integrity": "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==",
    +      "peer": true,
    +      "dependencies": {
    +        "browserslist": "^4.21.4",
    +        "postcss-selector-parser": "^6.0.4"
    +      },
    +      "engines": {
    +        "node": "^14 || ^16 || >=18.0"
    +      },
    +      "peerDependencies": {
    +        "postcss": "^8.2.15"
    +      }
    +    },
    +    "node_modules/superagent": {
    +      "version": "3.8.3",
    +      "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz",
    +      "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==",
    +      "deprecated": "Please upgrade to v7.0.2+ of superagent.  We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing.  See the releases tab for more information at .",
    +      "peer": true,
    +      "dependencies": {
    +        "component-emitter": "^1.2.0",
    +        "cookiejar": "^2.1.0",
    +        "debug": "^3.1.0",
    +        "extend": "^3.0.0",
    +        "form-data": "^2.3.1",
    +        "formidable": "^1.2.0",
    +        "methods": "^1.1.1",
    +        "mime": "^1.4.1",
    +        "qs": "^6.5.1",
    +        "readable-stream": "^2.3.5"
    +      },
    +      "engines": {
    +        "node": ">= 4.0"
    +      }
    +    },
    +    "node_modules/superagent/node_modules/debug": {
    +      "version": "3.2.7",
    +      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
    +      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "ms": "^2.1.1"
    +      }
    +    },
    +    "node_modules/superagent/node_modules/form-data": {
    +      "version": "2.5.1",
    +      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
    +      "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
    +      "peer": true,
    +      "dependencies": {
    +        "asynckit": "^0.4.0",
    +        "combined-stream": "^1.0.6",
    +        "mime-types": "^2.1.12"
    +      },
    +      "engines": {
    +        "node": ">= 0.12"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "has-flag": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/supports-hyperlinks": {
    +      "version": "2.3.0",
    +      "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
    +      "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
    +      "peer": true,
    +      "dependencies": {
    +        "has-flag": "^4.0.0",
    +        "supports-color": "^7.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/supports-preserve-symlinks-flag": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
    +      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/svg-parser": {
    +      "version": "2.0.4",
    +      "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
    +      "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==",
    +      "peer": true
    +    },
    +    "node_modules/svgo": {
    +      "version": "3.0.2",
    +      "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz",
    +      "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "@trysound/sax": "0.2.0",
    +        "commander": "^7.2.0",
    +        "css-select": "^5.1.0",
    +        "css-tree": "^2.2.1",
    +        "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/svgo/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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 10"
    +      }
    +    },
    +    "node_modules/svgo/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==",
    +      "peer": true,
    +      "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/svgo/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==",
    +      "peer": true,
    +      "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/svgo/node_modules/domhandler": {
    +      "version": "5.0.3",
    +      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
    +      "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
    +      "peer": true,
    +      "dependencies": {
    +        "domelementtype": "^2.3.0"
    +      },
    +      "engines": {
    +        "node": ">= 4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/fb55/domhandler?sponsor=1"
    +      }
    +    },
    +    "node_modules/svgo/node_modules/domutils": {
    +      "version": "3.1.0",
    +      "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
    +      "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
    +      "peer": true,
    +      "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/symbol-tree": {
    +      "version": "3.2.4",
    +      "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
    +      "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
    +      "peer": true
    +    },
    +    "node_modules/tabbable": {
    +      "version": "5.3.3",
    +      "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz",
    +      "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA=="
    +    },
    +    "node_modules/tapable": {
    +      "version": "2.2.1",
    +      "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
    +      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/tar-fs": {
    +      "version": "3.0.4",
    +      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz",
    +      "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==",
    +      "peer": true,
    +      "dependencies": {
    +        "mkdirp-classic": "^0.5.2",
    +        "pump": "^3.0.0",
    +        "tar-stream": "^3.1.5"
    +      }
    +    },
    +    "node_modules/tar-stream": {
    +      "version": "3.1.6",
    +      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz",
    +      "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==",
    +      "peer": true,
    +      "dependencies": {
    +        "b4a": "^1.6.4",
    +        "fast-fifo": "^1.2.0",
    +        "streamx": "^2.15.0"
    +      }
    +    },
    +    "node_modules/terminal-link": {
    +      "version": "2.1.1",
    +      "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
    +      "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "ansi-escapes": "^4.2.1",
    +        "supports-hyperlinks": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/terser": {
    +      "version": "5.19.2",
    +      "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz",
    +      "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jridgewell/source-map": "^0.3.3",
    +        "acorn": "^8.8.2",
    +        "commander": "^2.20.0",
    +        "source-map-support": "~0.5.20"
    +      },
    +      "bin": {
    +        "terser": "bin/terser"
    +      },
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/terser-webpack-plugin": {
    +      "version": "5.3.9",
    +      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
    +      "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@jridgewell/trace-mapping": "^0.3.17",
    +        "jest-worker": "^27.4.5",
    +        "schema-utils": "^3.1.1",
    +        "serialize-javascript": "^6.0.1",
    +        "terser": "^5.16.8"
    +      },
    +      "engines": {
    +        "node": ">= 10.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "webpack": "^5.1.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "@swc/core": {
    +          "optional": true
    +        },
    +        "esbuild": {
    +          "optional": true
    +        },
    +        "uglify-js": {
    +          "optional": true
    +        }
    +      }
    +    },
    +    "node_modules/terser/node_modules/commander": {
    +      "version": "2.20.3",
    +      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
    +      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
    +      "peer": true
    +    },
    +    "node_modules/test-exclude": {
    +      "version": "6.0.0",
    +      "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
    +      "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
    +      "peer": true,
    +      "dependencies": {
    +        "@istanbuljs/schema": "^0.1.2",
    +        "glob": "^7.1.4",
    +        "minimatch": "^3.0.4"
    +      },
    +      "engines": {
    +        "node": ">=8"
    +      }
    +    },
    +    "node_modules/test-exclude/node_modules/brace-expansion": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
    +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
    +      "dependencies": {
    +        "balanced-match": "^1.0.0",
    +        "concat-map": "0.0.1"
    +      }
    +    },
    +    "node_modules/test-exclude/node_modules/glob": {
    +      "version": "7.2.3",
    +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
    +      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "fs.realpath": "^1.0.0",
    +        "inflight": "^1.0.4",
    +        "inherits": "2",
    +        "minimatch": "^3.1.1",
    +        "once": "^1.3.0",
    +        "path-is-absolute": "^1.0.0"
    +      },
    +      "engines": {
    +        "node": "*"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
    +      }
    +    },
    +    "node_modules/test-exclude/node_modules/minimatch": {
    +      "version": "3.1.2",
    +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
    +      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
    +      "dependencies": {
    +        "brace-expansion": "^1.1.7"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/text-table": {
    +      "version": "0.2.0",
    +      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
    +      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
    +      "peer": true
    +    },
    +    "node_modules/throat": {
    +      "version": "6.0.2",
    +      "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz",
    +      "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==",
    +      "peer": true
    +    },
    +    "node_modules/thunky": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
    +      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
    +      "peer": true
    +    },
    +    "node_modules/tiny-invariant": {
    +      "version": "1.3.1",
    +      "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz",
    +      "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw=="
    +    },
    +    "node_modules/tiny-warning": {
    +      "version": "1.0.3",
    +      "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
    +      "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
    +    },
    +    "node_modules/tmpl": {
    +      "version": "1.0.5",
    +      "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
    +      "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
    +      "peer": true
    +    },
    +    "node_modules/to-fast-properties": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
    +      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "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==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-number": "^7.0.0"
    +      },
    +      "engines": {
    +        "node": ">=8.0"
    +      }
    +    },
    +    "node_modules/toidentifier": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
    +      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.6"
    +      }
    +    },
    +    "node_modules/totalist": {
    +      "version": "1.1.0",
    +      "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
    +      "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/tough-cookie": {
    +      "version": "4.1.3",
    +      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
    +      "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
    +      "peer": true,
    +      "dependencies": {
    +        "psl": "^1.1.33",
    +        "punycode": "^2.1.1",
    +        "universalify": "^0.2.0",
    +        "url-parse": "^1.5.3"
    +      },
    +      "engines": {
    +        "node": ">=6"
    +      }
    +    },
    +    "node_modules/tough-cookie/node_modules/universalify": {
    +      "version": "0.2.0",
    +      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
    +      "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 4.0.0"
    +      }
         },
    -    "node_modules/react-loading-skeleton": {
    -      "version": "3.3.1",
    -      "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.3.1.tgz",
    -      "integrity": "sha512-NilqqwMh2v9omN7LteiDloEVpFyMIa0VGqF+ukqp0ncVlYu1sKYbYGX9JEl+GtOT9TKsh04zCHAbavnQ2USldA==",
    -      "peerDependencies": {
    -        "react": ">=16.8.0"
    +    "node_modules/tr46": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
    +      "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
    +      "peer": true,
    +      "dependencies": {
    +        "punycode": "^2.1.1"
    +      },
    +      "engines": {
    +        "node": ">=8"
           }
         },
    -    "node_modules/react-overlays": {
    -      "version": "5.2.1",
    -      "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz",
    -      "integrity": "sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==",
    +    "node_modules/tsconfig-paths": {
    +      "version": "3.14.2",
    +      "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
    +      "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==",
    +      "peer": true,
           "dependencies": {
    -        "@babel/runtime": "^7.13.8",
    -        "@popperjs/core": "^2.11.6",
    -        "@restart/hooks": "^0.4.7",
    -        "@types/warning": "^3.0.0",
    -        "dom-helpers": "^5.2.0",
    -        "prop-types": "^15.7.2",
    -        "uncontrollable": "^7.2.1",
    -        "warning": "^4.0.3"
    +        "@types/json5": "^0.0.29",
    +        "json5": "^1.0.2",
    +        "minimist": "^1.2.6",
    +        "strip-bom": "^3.0.0"
    +      }
    +    },
    +    "node_modules/tsconfig-paths/node_modules/json5": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
    +      "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
    +      "peer": true,
    +      "dependencies": {
    +        "minimist": "^1.2.0"
    +      },
    +      "bin": {
    +        "json5": "lib/cli.js"
    +      }
    +    },
    +    "node_modules/tsconfig-paths/node_modules/strip-bom": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
    +      "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/tslib": {
    +      "version": "2.5.2",
    +      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
    +      "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA=="
    +    },
    +    "node_modules/tunnel-agent": {
    +      "version": "0.6.0",
    +      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
    +      "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
    +      "peer": true,
    +      "dependencies": {
    +        "safe-buffer": "^5.0.1"
    +      },
    +      "engines": {
    +        "node": "*"
    +      }
    +    },
    +    "node_modules/type-check": {
    +      "version": "0.4.0",
    +      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
    +      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
    +      "peer": true,
    +      "dependencies": {
    +        "prelude-ls": "^1.2.1"
    +      },
    +      "engines": {
    +        "node": ">= 0.8.0"
    +      }
    +    },
    +    "node_modules/type-detect": {
    +      "version": "4.0.8",
    +      "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
    +      "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/type-fest": {
    +      "version": "0.21.3",
    +      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
    +      "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
    +    },
    +    "node_modules/type-is": {
    +      "version": "1.6.18",
    +      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
    +      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
    +      "peer": true,
    +      "dependencies": {
    +        "media-typer": "0.3.0",
    +        "mime-types": "~2.1.24"
    +      },
    +      "engines": {
    +        "node": ">= 0.6"
    +      }
    +    },
    +    "node_modules/typed-array-buffer": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
    +      "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "get-intrinsic": "^1.2.1",
    +        "is-typed-array": "^1.1.10"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      }
    +    },
    +    "node_modules/typed-array-byte-length": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
    +      "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "for-each": "^0.3.3",
    +        "has-proto": "^1.0.1",
    +        "is-typed-array": "^1.1.10"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/typed-array-byte-offset": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
    +      "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
    +      "peer": true,
    +      "dependencies": {
    +        "available-typed-arrays": "^1.0.5",
    +        "call-bind": "^1.0.2",
    +        "for-each": "^0.3.3",
    +        "has-proto": "^1.0.1",
    +        "is-typed-array": "^1.1.10"
    +      },
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/typed-array-length": {
    +      "version": "1.0.4",
    +      "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
    +      "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "for-each": "^0.3.3",
    +        "is-typed-array": "^1.1.9"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/typedarray-to-buffer": {
    +      "version": "3.1.5",
    +      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
    +      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-typedarray": "^1.0.0"
    +      }
    +    },
    +    "node_modules/typescript": {
    +      "version": "4.9.5",
    +      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
    +      "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
    +      "peer": true,
    +      "bin": {
    +        "tsc": "bin/tsc",
    +        "tsserver": "bin/tsserver"
    +      },
    +      "engines": {
    +        "node": ">=4.2.0"
    +      }
    +    },
    +    "node_modules/unbox-primitive": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
    +      "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
    +      "peer": true,
    +      "dependencies": {
    +        "call-bind": "^1.0.2",
    +        "has-bigints": "^1.0.2",
    +        "has-symbols": "^1.0.3",
    +        "which-boxed-primitive": "^1.0.2"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/uncontrollable": {
    +      "version": "7.2.1",
    +      "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz",
    +      "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==",
    +      "dependencies": {
    +        "@babel/runtime": "^7.6.3",
    +        "@types/react": ">=16.9.11",
    +        "invariant": "^2.2.4",
    +        "react-lifecycles-compat": "^3.0.4"
           },
           "peerDependencies": {
    -        "react": ">=16.3.0",
    -        "react-dom": ">=16.3.0"
    +        "react": ">=15.0.0"
           }
         },
    -    "node_modules/react-popper": {
    -      "version": "2.3.0",
    -      "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz",
    -      "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==",
    +    "node_modules/unicode-canonical-property-names-ecmascript": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
    +      "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/unicode-match-property-ecmascript": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
    +      "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
    +      "peer": true,
           "dependencies": {
    -        "react-fast-compare": "^3.0.1",
    -        "warning": "^4.0.2"
    +        "unicode-canonical-property-names-ecmascript": "^2.0.0",
    +        "unicode-property-aliases-ecmascript": "^2.0.0"
    +      },
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/unicode-match-property-value-ecmascript": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
    +      "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/unicode-property-aliases-ecmascript": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
    +      "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=4"
    +      }
    +    },
    +    "node_modules/universal-cookie": {
    +      "version": "4.0.4",
    +      "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz",
    +      "integrity": "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==",
    +      "dependencies": {
    +        "@types/cookie": "^0.3.3",
    +        "cookie": "^0.4.0"
    +      }
    +    },
    +    "node_modules/universalify": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
    +      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 10.0.0"
    +      }
    +    },
    +    "node_modules/unpipe": {
    +      "version": "1.0.0",
    +      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
    +      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/update-browserslist-db": {
    +      "version": "1.0.11",
    +      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
    +      "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
    +      "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"
    +        }
    +      ],
    +      "peer": true,
    +      "dependencies": {
    +        "escalade": "^3.1.1",
    +        "picocolors": "^1.0.0"
    +      },
    +      "bin": {
    +        "update-browserslist-db": "cli.js"
           },
           "peerDependencies": {
    -        "@popperjs/core": "^2.0.0",
    -        "react": "^16.8.0 || ^17 || ^18",
    -        "react-dom": "^16.8.0 || ^17 || ^18"
    +        "browserslist": ">= 4.21.0"
           }
         },
    -    "node_modules/react-proptype-conditional-require": {
    -      "version": "1.0.4",
    -      "resolved": "https://registry.npmjs.org/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz",
    -      "integrity": "sha512-nopsRn7KnGgazBe2c3H2+Kf+Csp6PGDRLiBkYEDMKY8o/EIgft/WnIm/OnAKTawZiLnJXHAqhpFBddvs6NiXlw=="
    +    "node_modules/uri-js": {
    +      "version": "4.4.1",
    +      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
    +      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
    +      "peer": true,
    +      "dependencies": {
    +        "punycode": "^2.1.0"
    +      }
         },
    -    "node_modules/react-remove-scroll": {
    -      "version": "2.5.6",
    -      "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz",
    -      "integrity": "sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg==",
    +    "node_modules/url-loader": {
    +      "version": "4.1.1",
    +      "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz",
    +      "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==",
    +      "peer": true,
           "dependencies": {
    -        "react-remove-scroll-bar": "^2.3.4",
    -        "react-style-singleton": "^2.2.1",
    -        "tslib": "^2.1.0",
    -        "use-callback-ref": "^1.3.0",
    -        "use-sidecar": "^1.1.2"
    +        "loader-utils": "^2.0.0",
    +        "mime-types": "^2.1.27",
    +        "schema-utils": "^3.0.0"
           },
           "engines": {
    -        "node": ">=10"
    +        "node": ">= 10.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
           },
           "peerDependencies": {
    -        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
    -        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
    +        "file-loader": "*",
    +        "webpack": "^4.0.0 || ^5.0.0"
           },
           "peerDependenciesMeta": {
    -        "@types/react": {
    +        "file-loader": {
               "optional": true
             }
           }
         },
    -    "node_modules/react-remove-scroll-bar": {
    -      "version": "2.3.4",
    -      "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz",
    -      "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==",
    +    "node_modules/url-parse": {
    +      "version": "1.5.10",
    +      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
    +      "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "querystringify": "^2.1.1",
    +        "requires-port": "^1.0.0"
    +      }
    +    },
    +    "node_modules/use-callback-ref": {
    +      "version": "1.3.0",
    +      "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
    +      "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==",
           "dependencies": {
    -        "react-style-singleton": "^2.2.1",
             "tslib": "^2.0.0"
           },
           "engines": {
    @@ -1626,37 +15902,19 @@
             }
           }
         },
    -    "node_modules/react-responsive": {
    -      "version": "8.2.0",
    -      "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-8.2.0.tgz",
    -      "integrity": "sha512-iagCqVrw4QSjhxKp3I/YK6+ODkWY6G+YPElvdYKiUUbywwh9Ds0M7r26Fj2/7dWFFbOpcGnJE6uE7aMck8j5Qg==",
    -      "dependencies": {
    -        "hyphenate-style-name": "^1.0.0",
    -        "matchmediaquery": "^0.3.0",
    -        "prop-types": "^15.6.1",
    -        "shallow-equal": "^1.1.0"
    -      },
    -      "engines": {
    -        "node": ">= 0.10"
    -      },
    -      "peerDependencies": {
    -        "react": ">=16.8.0"
    -      }
    -    },
    -    "node_modules/react-style-singleton": {
    -      "version": "2.2.1",
    -      "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
    -      "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
    +    "node_modules/use-sidecar": {
    +      "version": "1.1.2",
    +      "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
    +      "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
           "dependencies": {
    -        "get-nonce": "^1.0.0",
    -        "invariant": "^2.2.4",
    +        "detect-node-es": "^1.1.0",
             "tslib": "^2.0.0"
           },
           "engines": {
             "node": ">=10"
           },
           "peerDependencies": {
    -        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
    +        "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
             "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
           },
           "peerDependenciesMeta": {
    @@ -1665,225 +15923,454 @@
             }
           }
         },
    -    "node_modules/react-table": {
    -      "version": "7.8.0",
    -      "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.8.0.tgz",
    -      "integrity": "sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==",
    -      "funding": {
    -        "type": "github",
    -        "url": "https://github.com/sponsors/tannerlinsley"
    -      },
    -      "peerDependencies": {
    -        "react": "^16.8.3 || ^17.0.0-0 || ^18.0.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==",
    +      "peer": true
    +    },
    +    "node_modules/utila": {
    +      "version": "0.4.0",
    +      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
    +      "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
    +      "peer": true
    +    },
    +    "node_modules/utils-merge": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
    +      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.4.0"
           }
         },
    -    "node_modules/react-test-renderer": {
    -      "version": "16.14.0",
    -      "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz",
    -      "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==",
    -      "dev": true,
    +    "node_modules/uuid": {
    +      "version": "9.0.0",
    +      "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
    +      "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
    +      "bin": {
    +        "uuid": "dist/bin/uuid"
    +      }
    +    },
    +    "node_modules/v8-to-istanbul": {
    +      "version": "8.1.1",
    +      "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
    +      "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
    +      "peer": true,
           "dependencies": {
    -        "object-assign": "^4.1.1",
    -        "prop-types": "^15.6.2",
    -        "react-is": "^16.8.6",
    -        "scheduler": "^0.19.1"
    +        "@types/istanbul-lib-coverage": "^2.0.1",
    +        "convert-source-map": "^1.6.0",
    +        "source-map": "^0.7.3"
           },
    -      "peerDependencies": {
    -        "react": "^16.14.0"
    +      "engines": {
    +        "node": ">=10.12.0"
           }
         },
    -    "node_modules/react-transition-group": {
    -      "version": "4.4.5",
    -      "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
    -      "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
    +    "node_modules/value-equal": {
    +      "version": "1.0.1",
    +      "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
    +      "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
    +    },
    +    "node_modules/vary": {
    +      "version": "1.1.2",
    +      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
    +      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 0.8"
    +      }
    +    },
    +    "node_modules/w3c-hr-time": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
    +      "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
    +      "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
    +      "peer": true,
           "dependencies": {
    -        "@babel/runtime": "^7.5.5",
    -        "dom-helpers": "^5.0.1",
    -        "loose-envify": "^1.4.0",
    -        "prop-types": "^15.6.2"
    +        "browser-process-hrtime": "^1.0.0"
    +      }
    +    },
    +    "node_modules/w3c-xmlserializer": {
    +      "version": "2.0.0",
    +      "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
    +      "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
    +      "peer": true,
    +      "dependencies": {
    +        "xml-name-validator": "^3.0.0"
           },
    -      "peerDependencies": {
    -        "react": ">=16.6.0",
    -        "react-dom": ">=16.6.0"
    +      "engines": {
    +        "node": ">=10"
           }
         },
    -    "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==",
    +    "node_modules/walker": {
    +      "version": "1.0.8",
    +      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
    +      "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
    +      "peer": true,
           "dependencies": {
    -        "pify": "^2.3.0"
    +        "makeerror": "1.0.12"
           }
         },
    -    "node_modules/readdirp": {
    -      "version": "3.6.0",
    -      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
    -      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
    +    "node_modules/warning": {
    +      "version": "4.0.3",
    +      "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
    +      "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
           "dependencies": {
    -        "picomatch": "^2.2.1"
    +        "loose-envify": "^1.0.0"
    +      }
    +    },
    +    "node_modules/watchpack": {
    +      "version": "2.4.0",
    +      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
    +      "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
    +      "peer": true,
    +      "dependencies": {
    +        "glob-to-regexp": "^0.4.1",
    +        "graceful-fs": "^4.1.2"
           },
           "engines": {
    -        "node": ">=8.10.0"
    +        "node": ">=10.13.0"
           }
         },
    -    "node_modules/reduce-function-call": {
    -      "version": "1.0.3",
    -      "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz",
    -      "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==",
    +    "node_modules/wbuf": {
    +      "version": "1.7.3",
    +      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
    +      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
    +      "peer": true,
           "dependencies": {
    -        "balanced-match": "^1.0.0"
    +        "minimalistic-assert": "^1.0.0"
           }
         },
    -    "node_modules/regenerator-runtime": {
    -      "version": "0.13.11",
    -      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
    -      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
    +    "node_modules/webidl-conversions": {
    +      "version": "6.1.0",
    +      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
    +      "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10.4"
    +      }
         },
    -    "node_modules/resolve": {
    -      "version": "1.22.2",
    -      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
    -      "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
    +    "node_modules/webpack": {
    +      "version": "5.88.2",
    +      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz",
    +      "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==",
    +      "peer": true,
           "dependencies": {
    -        "is-core-module": "^2.11.0",
    -        "path-parse": "^1.0.7",
    -        "supports-preserve-symlinks-flag": "^1.0.0"
    +        "@types/eslint-scope": "^3.7.3",
    +        "@types/estree": "^1.0.0",
    +        "@webassemblyjs/ast": "^1.11.5",
    +        "@webassemblyjs/wasm-edit": "^1.11.5",
    +        "@webassemblyjs/wasm-parser": "^1.11.5",
    +        "acorn": "^8.7.1",
    +        "acorn-import-assertions": "^1.9.0",
    +        "browserslist": "^4.14.5",
    +        "chrome-trace-event": "^1.0.2",
    +        "enhanced-resolve": "^5.15.0",
    +        "es-module-lexer": "^1.2.1",
    +        "eslint-scope": "5.1.1",
    +        "events": "^3.2.0",
    +        "glob-to-regexp": "^0.4.1",
    +        "graceful-fs": "^4.2.9",
    +        "json-parse-even-better-errors": "^2.3.1",
    +        "loader-runner": "^4.2.0",
    +        "mime-types": "^2.1.27",
    +        "neo-async": "^2.6.2",
    +        "schema-utils": "^3.2.0",
    +        "tapable": "^2.1.1",
    +        "terser-webpack-plugin": "^5.3.7",
    +        "watchpack": "^2.4.0",
    +        "webpack-sources": "^3.2.3"
           },
           "bin": {
    -        "resolve": "bin/resolve"
    +        "webpack": "bin/webpack.js"
    +      },
    +      "engines": {
    +        "node": ">=10.13.0"
           },
           "funding": {
    -        "url": "https://github.com/sponsors/ljharb"
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependenciesMeta": {
    +        "webpack-cli": {
    +          "optional": true
    +        }
           }
         },
    -    "node_modules/sass": {
    -      "version": "1.64.1",
    -      "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz",
    -      "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==",
    +    "node_modules/webpack-bundle-analyzer": {
    +      "version": "4.9.0",
    +      "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz",
    +      "integrity": "sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==",
    +      "peer": true,
           "dependencies": {
    -        "chokidar": ">=3.0.0 <4.0.0",
    -        "immutable": "^4.0.0",
    -        "source-map-js": ">=0.6.2 <2.0.0"
    +        "@discoveryjs/json-ext": "0.5.7",
    +        "acorn": "^8.0.4",
    +        "acorn-walk": "^8.0.0",
    +        "chalk": "^4.1.0",
    +        "commander": "^7.2.0",
    +        "gzip-size": "^6.0.0",
    +        "lodash": "^4.17.20",
    +        "opener": "^1.5.2",
    +        "sirv": "^1.0.7",
    +        "ws": "^7.3.1"
           },
           "bin": {
    -        "sass": "sass.js"
    +        "webpack-bundle-analyzer": "lib/bin/analyzer.js"
           },
           "engines": {
    -        "node": ">=14.0.0"
    +        "node": ">= 10.13.0"
           }
         },
    -    "node_modules/scheduler": {
    -      "version": "0.19.1",
    -      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
    -      "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
    -      "dependencies": {
    -        "loose-envify": "^1.1.0",
    -        "object-assign": "^4.1.1"
    +    "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": {
    +      "version": "8.2.0",
    +      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
    +      "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.4.0"
           }
         },
    -    "node_modules/sentence-case": {
    -      "version": "3.0.4",
    -      "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz",
    -      "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==",
    +    "node_modules/webpack-bundle-analyzer/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==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 10"
    +      }
    +    },
    +    "node_modules/webpack-cli": {
    +      "version": "5.1.4",
    +      "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
    +      "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
    +      "peer": true,
           "dependencies": {
    -        "no-case": "^3.0.4",
    -        "tslib": "^2.0.3",
    -        "upper-case-first": "^2.0.2"
    +        "@discoveryjs/json-ext": "^0.5.0",
    +        "@webpack-cli/configtest": "^2.1.1",
    +        "@webpack-cli/info": "^2.0.2",
    +        "@webpack-cli/serve": "^2.0.5",
    +        "colorette": "^2.0.14",
    +        "commander": "^10.0.1",
    +        "cross-spawn": "^7.0.3",
    +        "envinfo": "^7.7.3",
    +        "fastest-levenshtein": "^1.0.12",
    +        "import-local": "^3.0.2",
    +        "interpret": "^3.1.1",
    +        "rechoir": "^0.8.0",
    +        "webpack-merge": "^5.7.3"
    +      },
    +      "bin": {
    +        "webpack-cli": "bin/cli.js"
    +      },
    +      "engines": {
    +        "node": ">=14.15.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "webpack": "5.x.x"
    +      },
    +      "peerDependenciesMeta": {
    +        "@webpack-cli/generators": {
    +          "optional": true
    +        },
    +        "webpack-bundle-analyzer": {
    +          "optional": true
    +        },
    +        "webpack-dev-server": {
    +          "optional": true
    +        }
           }
         },
    -    "node_modules/shallow-equal": {
    -      "version": "1.2.1",
    -      "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
    -      "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
    +    "node_modules/webpack-cli/node_modules/commander": {
    +      "version": "10.0.1",
    +      "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
    +      "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=14"
    +      }
         },
    -    "node_modules/snake-case": {
    -      "version": "3.0.4",
    -      "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
    -      "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
    +    "node_modules/webpack-dev-middleware": {
    +      "version": "5.3.3",
    +      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz",
    +      "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==",
    +      "peer": true,
           "dependencies": {
    -        "dot-case": "^3.0.4",
    -        "tslib": "^2.0.3"
    +        "colorette": "^2.0.10",
    +        "memfs": "^3.4.3",
    +        "mime-types": "^2.1.31",
    +        "range-parser": "^1.2.1",
    +        "schema-utils": "^4.0.0"
    +      },
    +      "engines": {
    +        "node": ">= 12.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "webpack": "^4.0.0 || ^5.0.0"
           }
         },
    -    "node_modules/source-map": {
    -      "version": "0.6.1",
    -      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    -      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
    -      "engines": {
    -        "node": ">=0.10.0"
    +    "node_modules/webpack-dev-middleware/node_modules/ajv": {
    +      "version": "8.12.0",
    +      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
    +      "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
    +      "peer": true,
    +      "dependencies": {
    +        "fast-deep-equal": "^3.1.1",
    +        "json-schema-traverse": "^1.0.0",
    +        "require-from-string": "^2.0.2",
    +        "uri-js": "^4.2.2"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/epoberezkin"
           }
         },
    -    "node_modules/source-map-js": {
    -      "version": "1.0.2",
    -      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
    -      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
    +    "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": {
    +      "version": "5.1.0",
    +      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
    +      "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
    +      "peer": true,
    +      "dependencies": {
    +        "fast-deep-equal": "^3.1.3"
    +      },
    +      "peerDependencies": {
    +        "ajv": "^8.8.2"
    +      }
    +    },
    +    "node_modules/webpack-dev-middleware/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==",
    +      "peer": true
    +    },
    +    "node_modules/webpack-dev-middleware/node_modules/schema-utils": {
    +      "version": "4.2.0",
    +      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
    +      "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/json-schema": "^7.0.9",
    +        "ajv": "^8.9.0",
    +        "ajv-formats": "^2.1.1",
    +        "ajv-keywords": "^5.1.0"
    +      },
           "engines": {
    -        "node": ">=0.10.0"
    +        "node": ">= 12.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
           }
         },
    -    "node_modules/split-on-first": {
    -      "version": "1.1.0",
    -      "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
    -      "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
    +    "node_modules/webpack-dev-server": {
    +      "version": "4.15.1",
    +      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz",
    +      "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/bonjour": "^3.5.9",
    +        "@types/connect-history-api-fallback": "^1.3.5",
    +        "@types/express": "^4.17.13",
    +        "@types/serve-index": "^1.9.1",
    +        "@types/serve-static": "^1.13.10",
    +        "@types/sockjs": "^0.3.33",
    +        "@types/ws": "^8.5.5",
    +        "ansi-html-community": "^0.0.8",
    +        "bonjour-service": "^1.0.11",
    +        "chokidar": "^3.5.3",
    +        "colorette": "^2.0.10",
    +        "compression": "^1.7.4",
    +        "connect-history-api-fallback": "^2.0.0",
    +        "default-gateway": "^6.0.3",
    +        "express": "^4.17.3",
    +        "graceful-fs": "^4.2.6",
    +        "html-entities": "^2.3.2",
    +        "http-proxy-middleware": "^2.0.3",
    +        "ipaddr.js": "^2.0.1",
    +        "launch-editor": "^2.6.0",
    +        "open": "^8.0.9",
    +        "p-retry": "^4.5.0",
    +        "rimraf": "^3.0.2",
    +        "schema-utils": "^4.0.0",
    +        "selfsigned": "^2.1.1",
    +        "serve-index": "^1.9.1",
    +        "sockjs": "^0.3.24",
    +        "spdy": "^4.0.2",
    +        "webpack-dev-middleware": "^5.3.1",
    +        "ws": "^8.13.0"
    +      },
    +      "bin": {
    +        "webpack-dev-server": "bin/webpack-dev-server.js"
    +      },
           "engines": {
    -        "node": ">=6"
    +        "node": ">= 12.13.0"
    +      },
    +      "funding": {
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
    +      },
    +      "peerDependencies": {
    +        "webpack": "^4.37.0 || ^5.0.0"
    +      },
    +      "peerDependenciesMeta": {
    +        "webpack": {
    +          "optional": true
    +        },
    +        "webpack-cli": {
    +          "optional": true
    +        }
           }
         },
    -    "node_modules/sprintf-js": {
    -      "version": "1.0.3",
    -      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
    -      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
    -    },
    -    "node_modules/strict-uri-encode": {
    -      "version": "2.0.0",
    -      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
    -      "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==",
    -      "engines": {
    -        "node": ">=4"
    +    "node_modules/webpack-dev-server/node_modules/ajv": {
    +      "version": "8.12.0",
    +      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
    +      "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
    +      "peer": true,
    +      "dependencies": {
    +        "fast-deep-equal": "^3.1.1",
    +        "json-schema-traverse": "^1.0.0",
    +        "require-from-string": "^2.0.2",
    +        "uri-js": "^4.2.2"
    +      },
    +      "funding": {
    +        "type": "github",
    +        "url": "https://github.com/sponsors/epoberezkin"
           }
         },
    -    "node_modules/style-dictionary": {
    -      "version": "3.8.0",
    -      "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-3.8.0.tgz",
    -      "integrity": "sha512-wHlB/f5eO3mDcYv6WtOz6gvQC477jBKrwuIXe+PtHskTCBsJdAOvL8hCquczJxDui2TnwpeNE+2msK91JJomZg==",
    +    "node_modules/webpack-dev-server/node_modules/ajv-keywords": {
    +      "version": "5.1.0",
    +      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
    +      "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
    +      "peer": true,
           "dependencies": {
    -        "chalk": "^4.0.0",
    -        "change-case": "^4.1.2",
    -        "commander": "^8.3.0",
    -        "fs-extra": "^10.0.0",
    -        "glob": "^7.2.0",
    -        "json5": "^2.2.2",
    -        "jsonc-parser": "^3.0.0",
    -        "lodash": "^4.17.15",
    -        "tinycolor2": "^1.4.1"
    -      },
    -      "bin": {
    -        "style-dictionary": "bin/style-dictionary"
    +        "fast-deep-equal": "^3.1.3"
           },
    -      "engines": {
    -        "node": ">=12.0.0"
    +      "peerDependencies": {
    +        "ajv": "^8.8.2"
           }
         },
    -    "node_modules/style-dictionary/node_modules/brace-expansion": {
    +    "node_modules/webpack-dev-server/node_modules/brace-expansion": {
           "version": "1.1.11",
           "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
           "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
    +      "peer": true,
           "dependencies": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
           }
         },
    -    "node_modules/style-dictionary/node_modules/commander": {
    -      "version": "8.3.0",
    -      "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
    -      "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
    -      "engines": {
    -        "node": ">= 12"
    -      }
    -    },
    -    "node_modules/style-dictionary/node_modules/glob": {
    +    "node_modules/webpack-dev-server/node_modules/glob": {
           "version": "7.2.3",
           "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
           "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
    +      "peer": true,
           "dependencies": {
             "fs.realpath": "^1.0.0",
             "inflight": "^1.0.4",
    @@ -1899,10 +16386,26 @@
             "url": "https://github.com/sponsors/isaacs"
           }
         },
    -    "node_modules/style-dictionary/node_modules/minimatch": {
    +    "node_modules/webpack-dev-server/node_modules/ipaddr.js": {
    +      "version": "2.1.0",
    +      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz",
    +      "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 10"
    +      }
    +    },
    +    "node_modules/webpack-dev-server/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==",
    +      "peer": true
    +    },
    +    "node_modules/webpack-dev-server/node_modules/minimatch": {
           "version": "3.1.2",
           "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
           "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
    +      "peer": true,
           "dependencies": {
             "brace-expansion": "^1.1.7"
           },
    @@ -1910,158 +16413,339 @@
             "node": "*"
           }
         },
    -    "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==",
    +    "node_modules/webpack-dev-server/node_modules/rimraf": {
    +      "version": "3.0.2",
    +      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
    +      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
    +      "peer": true,
           "dependencies": {
    -        "has-flag": "^4.0.0"
    +        "glob": "^7.1.3"
           },
    -      "engines": {
    -        "node": ">=8"
    +      "bin": {
    +        "rimraf": "bin.js"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/isaacs"
           }
         },
    -    "node_modules/supports-preserve-symlinks-flag": {
    -      "version": "1.0.0",
    -      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
    -      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
    +    "node_modules/webpack-dev-server/node_modules/schema-utils": {
    +      "version": "4.2.0",
    +      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
    +      "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
    +      "peer": true,
    +      "dependencies": {
    +        "@types/json-schema": "^7.0.9",
    +        "ajv": "^8.9.0",
    +        "ajv-formats": "^2.1.1",
    +        "ajv-keywords": "^5.1.0"
    +      },
           "engines": {
    -        "node": ">= 0.4"
    +        "node": ">= 12.13.0"
           },
           "funding": {
    -        "url": "https://github.com/sponsors/ljharb"
    +        "type": "opencollective",
    +        "url": "https://opencollective.com/webpack"
           }
         },
    -    "node_modules/tabbable": {
    -      "version": "5.3.3",
    -      "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz",
    -      "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA=="
    -    },
    -    "node_modules/tinycolor2": {
    -      "version": "1.6.0",
    -      "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
    -      "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
    +    "node_modules/webpack-dev-server/node_modules/ws": {
    +      "version": "8.13.0",
    +      "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
    +      "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10.0.0"
    +      },
    +      "peerDependencies": {
    +        "bufferutil": "^4.0.1",
    +        "utf-8-validate": ">=5.0.2"
    +      },
    +      "peerDependenciesMeta": {
    +        "bufferutil": {
    +          "optional": true
    +        },
    +        "utf-8-validate": {
    +          "optional": true
    +        }
    +      }
         },
    -    "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==",
    +    "node_modules/webpack-merge": {
    +      "version": "5.9.0",
    +      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz",
    +      "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==",
    +      "peer": true,
           "dependencies": {
    -        "is-number": "^7.0.0"
    +        "clone-deep": "^4.0.1",
    +        "wildcard": "^2.0.0"
           },
           "engines": {
    -        "node": ">=8.0"
    +        "node": ">=10.0.0"
           }
         },
    -    "node_modules/tslib": {
    -      "version": "2.5.2",
    -      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
    -      "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA=="
    +    "node_modules/webpack-sources": {
    +      "version": "1.4.3",
    +      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
    +      "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
    +      "peer": true,
    +      "dependencies": {
    +        "source-list-map": "^2.0.0",
    +        "source-map": "~0.6.1"
    +      }
         },
    -    "node_modules/uncontrollable": {
    -      "version": "7.2.1",
    -      "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz",
    -      "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==",
    +    "node_modules/webpack-sources/node_modules/source-map": {
    +      "version": "0.6.1",
    +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    +      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=0.10.0"
    +      }
    +    },
    +    "node_modules/webpack/node_modules/webpack-sources": {
    +      "version": "3.2.3",
    +      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
    +      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10.13.0"
    +      }
    +    },
    +    "node_modules/websocket-driver": {
    +      "version": "0.7.4",
    +      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
    +      "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
    +      "peer": true,
           "dependencies": {
    -        "@babel/runtime": "^7.6.3",
    -        "@types/react": ">=16.9.11",
    -        "invariant": "^2.2.4",
    -        "react-lifecycles-compat": "^3.0.4"
    +        "http-parser-js": ">=0.5.1",
    +        "safe-buffer": ">=5.1.0",
    +        "websocket-extensions": ">=0.1.1"
           },
    -      "peerDependencies": {
    -        "react": ">=15.0.0"
    +      "engines": {
    +        "node": ">=0.8.0"
           }
         },
    -    "node_modules/universalify": {
    -      "version": "2.0.0",
    -      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
    -      "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
    +    "node_modules/websocket-extensions": {
    +      "version": "0.1.4",
    +      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
    +      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
    +      "peer": true,
           "engines": {
    -        "node": ">= 10.0.0"
    +        "node": ">=0.8.0"
           }
         },
    -    "node_modules/upper-case": {
    -      "version": "2.0.2",
    -      "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz",
    -      "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==",
    +    "node_modules/whatwg-encoding": {
    +      "version": "1.0.5",
    +      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
    +      "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
    +      "peer": true,
           "dependencies": {
    -        "tslib": "^2.0.3"
    +        "iconv-lite": "0.4.24"
           }
         },
    -    "node_modules/upper-case-first": {
    -      "version": "2.0.2",
    -      "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz",
    -      "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==",
    +    "node_modules/whatwg-mimetype": {
    +      "version": "2.3.0",
    +      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
    +      "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
    +      "peer": true
    +    },
    +    "node_modules/whatwg-url": {
    +      "version": "8.7.0",
    +      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
    +      "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
    +      "peer": true,
           "dependencies": {
    -        "tslib": "^2.0.3"
    +        "lodash": "^4.7.0",
    +        "tr46": "^2.1.0",
    +        "webidl-conversions": "^6.1.0"
    +      },
    +      "engines": {
    +        "node": ">=10"
           }
         },
    -    "node_modules/use-callback-ref": {
    -      "version": "1.3.0",
    -      "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
    -      "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==",
    +    "node_modules/which": {
    +      "version": "2.0.2",
    +      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
    +      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
    +      "peer": true,
           "dependencies": {
    -        "tslib": "^2.0.0"
    +        "isexe": "^2.0.0"
    +      },
    +      "bin": {
    +        "node-which": "bin/node-which"
           },
           "engines": {
    -        "node": ">=10"
    +        "node": ">= 8"
    +      }
    +    },
    +    "node_modules/which-boxed-primitive": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
    +      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
    +      "peer": true,
    +      "dependencies": {
    +        "is-bigint": "^1.0.1",
    +        "is-boolean-object": "^1.1.0",
    +        "is-number-object": "^1.0.4",
    +        "is-string": "^1.0.5",
    +        "is-symbol": "^1.0.3"
           },
    -      "peerDependencies": {
    -        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
    -        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
    +      }
    +    },
    +    "node_modules/which-typed-array": {
    +      "version": "1.1.11",
    +      "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",
    +      "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",
    +      "peer": true,
    +      "dependencies": {
    +        "available-typed-arrays": "^1.0.5",
    +        "call-bind": "^1.0.2",
    +        "for-each": "^0.3.3",
    +        "gopd": "^1.0.1",
    +        "has-tostringtag": "^1.0.0"
           },
    -      "peerDependenciesMeta": {
    -        "@types/react": {
    -          "optional": true
    -        }
    +      "engines": {
    +        "node": ">= 0.4"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/ljharb"
           }
         },
    -    "node_modules/use-sidecar": {
    -      "version": "1.1.2",
    -      "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
    -      "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
    +    "node_modules/wildcard": {
    +      "version": "2.0.1",
    +      "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
    +      "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
    +      "peer": true
    +    },
    +    "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==",
    +      "peer": true,
           "dependencies": {
    -        "detect-node-es": "^1.1.0",
    -        "tslib": "^2.0.0"
    +        "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/wrappy": {
    +      "version": "1.0.2",
    +      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
    +      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
    +    },
    +    "node_modules/write-file-atomic": {
    +      "version": "3.0.3",
    +      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
    +      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
    +      "peer": true,
    +      "dependencies": {
    +        "imurmurhash": "^0.1.4",
    +        "is-typedarray": "^1.0.0",
    +        "signal-exit": "^3.0.2",
    +        "typedarray-to-buffer": "^3.1.5"
    +      }
    +    },
    +    "node_modules/ws": {
    +      "version": "7.5.9",
    +      "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
    +      "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=8.3.0"
    +      },
           "peerDependencies": {
    -        "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
    -        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
    +        "bufferutil": "^4.0.1",
    +        "utf-8-validate": "^5.0.2"
           },
           "peerDependenciesMeta": {
    -        "@types/react": {
    +        "bufferutil": {
    +          "optional": true
    +        },
    +        "utf-8-validate": {
               "optional": true
             }
           }
         },
    -    "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=="
    +    "node_modules/xml-name-validator": {
    +      "version": "3.0.0",
    +      "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
    +      "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
    +      "peer": true
         },
    -    "node_modules/uuid": {
    -      "version": "9.0.0",
    -      "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
    -      "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
    -      "bin": {
    -        "uuid": "dist/bin/uuid"
    +    "node_modules/xmlchars": {
    +      "version": "2.2.0",
    +      "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
    +      "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
    +      "peer": true
    +    },
    +    "node_modules/y18n": {
    +      "version": "5.0.8",
    +      "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
    +      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
           }
         },
    -    "node_modules/warning": {
    -      "version": "4.0.3",
    -      "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
    -      "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
    +    "node_modules/yallist": {
    +      "version": "3.1.1",
    +      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
    +      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
    +      "peer": true
    +    },
    +    "node_modules/yaml": {
    +      "version": "1.10.2",
    +      "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
    +      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">= 6"
    +      }
    +    },
    +    "node_modules/yargs": {
    +      "version": "16.2.0",
    +      "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
    +      "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
    +      "peer": true,
           "dependencies": {
    -        "loose-envify": "^1.0.0"
    +        "cliui": "^7.0.2",
    +        "escalade": "^3.1.1",
    +        "get-caller-file": "^2.0.5",
    +        "require-directory": "^2.1.1",
    +        "string-width": "^4.2.0",
    +        "y18n": "^5.0.5",
    +        "yargs-parser": "^20.2.2"
    +      },
    +      "engines": {
    +        "node": ">=10"
           }
         },
    -    "node_modules/wrappy": {
    -      "version": "1.0.2",
    -      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
    -      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
    +    "node_modules/yargs-parser": {
    +      "version": "20.2.9",
    +      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
    +      "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      }
    +    },
    +    "node_modules/yocto-queue": {
    +      "version": "0.1.0",
    +      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
    +      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
    +      "peer": true,
    +      "engines": {
    +        "node": ">=10"
    +      },
    +      "funding": {
    +        "url": "https://github.com/sponsors/sindresorhus"
    +      }
         }
       }
     }
    diff --git a/example/package.json b/example/package.json
    index 65818913f..f4133a2b8 100644
    --- a/example/package.json
    +++ b/example/package.json
    @@ -15,13 +15,16 @@
       "author": "",
       "license": "ISC",
       "dependencies": {
    -    "@edx/brand": "npm:@edx/brand-edx.org@2.2.0-alpha.13",
    -    "@edx/paragon": "21.0.0-alpha.40",
    -    "react": "16.14.0",
    -    "react-dom": "16.14.0"
    +    "@edx/brand": "npm:@edx/brand-openedx@1.2.0",
    +    "@edx/frontend-platform": "4.6.0",
    +    "@edx/paragon": "20.45.5",
    +    "react": "17.0.2",
    +    "react-dom": "17.0.2",
    +    "react-redux": "7.2.9",
    +    "react-router-dom": "5.3.4"
       },
       "devDependencies": {
         "@edx/browserslist-config": "1.2.0",
    -    "react-test-renderer": "16.14.0"
    +    "react-test-renderer": "17.0.2"
       }
     }
    diff --git a/example/src/ParagonPreview.jsx b/example/src/ParagonPreview.jsx
    index 118c72e59..0d9dbfa4f 100644
    --- a/example/src/ParagonPreview.jsx
    +++ b/example/src/ParagonPreview.jsx
    @@ -2,33 +2,47 @@ import React from 'react';
     
     const ParagonPreview = () => {
       if (!PARAGON_THEME) {
    -    return null;
    +    return 

    Missing PARAGON_THEME global variable. Depending on configuration, this may be OK.

    ; } return ( <>

    Paragon

    Exposed theme CSS files

    +

    + + Note: Depending on the versions of @edx/paragon and/or @edx/brand installed, + it is expected that no exposed theme CSS assets be listed here. + +

    Contents of PARAGON_THEME global variable

    {JSON.stringify(PARAGON_THEME, null, 2)}
    diff --git a/example/src/index.jsx b/example/src/index.jsx index e79dc6583..2f50d91ed 100644 --- a/example/src/index.jsx +++ b/example/src/index.jsx @@ -1,4 +1,11 @@ import ReactDOM from 'react-dom'; +import { + AppProvider, + ErrorPage, +} from '@edx/frontend-platform/react'; +import { APP_INIT_ERROR, APP_READY, initialize } from '@edx/frontend-platform'; +import { subscribe } from '@edx/frontend-platform/pubSub'; + import App from './App'; // This line is to emulate what frontend-platform does when i18n initializes. @@ -7,7 +14,21 @@ import App from './App'; // document. See: https://github.com/openedx/frontend-platform/blob/master/src/i18n/lib.js#L186 global.document.getElementsByTagName('html')[0].setAttribute('dir', 'ltr'); -ReactDOM.render( - , - document.getElementById('root'), -); +subscribe(APP_READY, () => { + ReactDOM.render( + + + , + document.getElementById('root'), + ); +}); + +subscribe(APP_INIT_ERROR, (error) => { + ReactDOM.render(, document.getElementById('root')); +}); + +initialize({ + messages: [], + requireAuthenticatedUser: false, + hydrateAuthenticatedUser: true, +}); diff --git a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js index 3ac0c2cec..1052912ca 100644 --- a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +++ b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js @@ -1,189 +1,156 @@ const { Compilation, sources } = require('webpack'); -const parse5 = require('parse5'); +const dotenv = require('dotenv'); +const fs = require('fs'); +const path = require('path'); const { getParagonVersion, getParagonThemeCss, } = require('../../../config/data/paragonUtils'); - +const { + injectMetadataIntoDocument, + // getMfeRuntimeConfig, + getParagonStylesheetUrls, + injectParagonCoreStylesheets, + injectParagonThemeVariantStylesheets, +} = require('./utils'); +const resolvePrivateEnvConfig = require('../../resolvePrivateEnvConfig'); + +// Add process env vars. Currently used only for setting the +// server port and the publicPath +dotenv.config({ + path: path.resolve(process.cwd(), '.env.development'), +}); + +// Allow private/local overrides of env vars from .env.development for config settings +// that you'd like to persist locally during development, without the risk of checking +// in temporary modifications to .env.development. +resolvePrivateEnvConfig('.env.private'); + +// Resolve configuration `env.config`. +const envConfigFile = path.resolve(process.cwd(), 'env.config.js'); + +// Get Paragon and brand versions / CSS files from disk. const paragonVersion = getParagonVersion(process.cwd()); const paragonThemeCss = getParagonThemeCss(process.cwd()); - const brandVersion = getParagonVersion(process.cwd(), { isBrandOverride: true }); const brandThemeCss = getParagonThemeCss(process.cwd(), { isBrandOverride: true }); /** - * Injects `PARAGON_THEME` global variable into the HTML document during the Webpack compilation process. + * 1. Injects `PARAGON_THEME` global variable into the HTML document during the Webpack compilation process. + * 2. Injects `` element(s) for the Paragon and brand CSS into the HTML document. */ class ParagonWebpackPlugin { - constructor() { - this.paragon = { - version: paragonVersion, - }; - - this.brand = { - version: brandVersion, - }; + constructor({ processAssetsHandlers = [] } = {}) { + this.pluginName = 'ParagonWebpackPlugin'; + this.paragonThemeUrlsConfig = {}; + this.paragonMetadata = {}; + + // List of handlers to be executed after processing assets during the Webpack compilation. + this.processAssetsHandlers = [ + this.resolveParagonThemeUrlsFromConfig, + this.injectParagonMetadataIntoDocument, + this.injectParagonStylesheetsIntoDocument, + ...processAssetsHandlers, + ].map(handler => handler.bind(this)); } - getDescendantByTag(node, tag) { - for (let i = 0; i < node.childNodes?.length; i++) { - if (node.childNodes[i].tagName === tag) { - return node.childNodes[i]; - } - const result = this.getDescendantByTag(node.childNodes[i], tag); - if (result) { - return result; - } + /** + * Resolves the MFE configuration for ``PARAGON_THEME_URLS`` in the following priority order: + * + * 1. ``mfeRuntimeApiConfig.PARAGON_THEME_URLS`` + * 2. ``envConfig.PARAGON_THEME_URLS`` + * 3. ``process.env.PARAGON_THEME_URLS`` + * + * @returns {Object} Metadata about the Paragon and brand theme URLs from configuration. + */ + async resolveParagonThemeUrlsFromConfig() { + // const mfeRuntimeApiConfig = await getMfeRuntimeConfig(); + let envConfig; + if (fs.existsSync(envConfigFile)) { + envConfig = require(envConfigFile); } - return null; - } + // const paragonThemeUrls = mfeRuntimeApiConfig?.PARAGON_THEME_URLS + // ?? envConfig?.PARAGON_THEME_URLS + // ?? process.env.PARAGON_THEME_URLS; - findCoreCssAsset(paragonAssets) { - return paragonAssets?.find((asset) => asset.name.includes('core') && asset.name.endsWith('.css')); - } + const paragonThemeUrls = envConfig?.PARAGON_THEME_URLS ?? process.env.PARAGON_THEME_URLS; - findThemeVariantCssAssets(paragonAssets, { isBrandOverride = false }) { - const themeVariantsSource = isBrandOverride ? brandThemeCss?.variants : paragonThemeCss?.variants; - const themeVariantCssAssets = {}; - Object.entries(themeVariantsSource).forEach(([themeVariant, value]) => { - const foundThemeVariantAsset = paragonAssets.find((asset) => asset.name.includes(value.outputChunkName)); - if (!foundThemeVariantAsset) { - return; - } - themeVariantCssAssets[themeVariant] = { - fileName: foundThemeVariantAsset.name, - }; - }); - return themeVariantCssAssets; + this.paragonThemeUrlsConfig = paragonThemeUrls; } - getParagonCssAssetsFromCompilation(compilation, { isBrandOverride = false } = {}) { - const assetSubstring = isBrandOverride ? 'brand' : 'paragon'; - const paragonAssets = compilation.getAssets().filter(asset => asset.name.includes(assetSubstring) && asset.name.endsWith('.css')); - const coreCssAsset = this.findCoreCssAsset(paragonAssets); - const themeVariantCssAssets = this.findThemeVariantCssAssets(paragonAssets, { isBrandOverride }); - return { - coreCssAsset: { - fileName: coreCssAsset?.name, - }, - themeVariantCssAssets, - }; + /** + * Generates `PARAGON_THEME` global variable in HTML document. + * @param {Object} compilation Webpack compilation object. + */ + injectParagonMetadataIntoDocument(compilation) { + const paragonMetadata = injectMetadataIntoDocument(compilation, { + paragonThemeCss, + paragonVersion, + brandThemeCss, + brandVersion, + }); + if (paragonMetadata) { + this.paragonMetadata = paragonMetadata; + } } - findScriptInsertionPoint({ document, originalSource }) { - const bodyElement = this.getDescendantByTag(document, 'body'); - if (!bodyElement) { - throw new Error('Missing body element in index.html.'); - } + injectParagonStylesheetsIntoDocument(compilation) { + const file = compilation.getAsset('index.html'); - // determine script insertion point - if (bodyElement.sourceCodeLocation?.endTag) { - return bodyElement.sourceCodeLocation.endTag.startOffset; + // If the `index.html` hasn't loaded yet, or there are no Paragon theme URLs, then there is nothing to do yet. + if (!file || Object.keys(this.paragonThemeUrlsConfig || {}).length === 0) { + return; } - // less accurate fallback - return originalSource.indexOf(''); - } - - minifyScript(script) { - return script - .replace(/>[\r\n ]+<') - .replace(/(<.*?>)|\s+/g, (m, $1) => { - if ($1) { return $1; } - return ' '; - }) - .trim(); - } - - insertScriptContentsIntoDocument({ - originalSource, - scriptContents, - }) { - // parse file as html document - const document = parse5.parse(originalSource, { - sourceCodeLocationInfo: true, + // Generates `` element(s) for the Paragon and brand CSS files. + const paragonStylesheetUrls = getParagonStylesheetUrls({ + paragonThemeUrls: this.paragonThemeUrlsConfig, + paragonVersion, + brandVersion, }); - - // find the body element - const scriptInsertionPoint = this.findScriptInsertionPoint({ - document, - originalSource, + const { + core: paragonCoreCss, + variants: paragonThemeVariantCss, + } = paragonStylesheetUrls; + + const originalSource = file.source.source(); + + // Inject core CSS + let newSource = injectParagonCoreStylesheets({ + source: originalSource, + paragonCoreCss, + paragonThemeCss, + brandThemeCss, + fallbackUrls: { + default: this.paragonMetadata.paragon.themeUrls.core.fileName, + brandOverride: this.paragonMetadata.brand.themeUrls.core.fileName, + }, }); - // create Paragon script to inject into the HTML document - const paragonScript = ``; - - // insert the Paragon script into the HTML document - const newSource = new sources.ReplaceSource( - new sources.RawSource(originalSource), - 'index.html', - ); - newSource.insert(scriptInsertionPoint, this.minifyScript(paragonScript)); - return newSource; - } + // Inject theme variant CSS + newSource = injectParagonThemeVariantStylesheets({ + source: newSource.source(), + paragonThemeVariantCss, + paragonThemeCss, + brandThemeCss, + }); - addToScriptContents({ - version, - defaults, - coreCssAsset, - themeVariantCssAssets, - }) { - return { - version, - themeUrls: { - core: coreCssAsset, - variants: themeVariantCssAssets, - defaults, - }, - }; + compilation.updateAsset('index.html', new sources.RawSource(newSource.source())); } apply(compiler) { - compiler.hooks.thisCompilation.tap('ParagonWebpackPlugin', (compilation) => { + compiler.hooks.thisCompilation.tap(this.pluginName, (compilation) => { compilation.hooks.processAssets.tap( { - name: 'ParagonWebpackPlugin', + name: this.pluginName, stage: Compilation.PROCESS_ASSETS_STAGE_ADDITIONS, additionalAssets: true, }, () => { - const file = compilation.getAsset('index.html'); - if (!file) { - return; - } - const { - coreCssAsset: paragonCoreCssAsset, - themeVariantCssAssets: paragonThemeVariantCssAssets, - } = this.getParagonCssAssetsFromCompilation(compilation); - - const { - coreCssAsset: brandCoreCssAsset, - themeVariantCssAssets: brandThemeVariantCssAssets, - } = this.getParagonCssAssetsFromCompilation(compilation, { isBrandOverride: true }); - - const scriptContents = {}; - scriptContents.paragon = this.addToScriptContents({ - version: this.paragon.version, - coreCssAsset: paragonCoreCssAsset, - themeVariantCssAssets: paragonThemeVariantCssAssets, - defaults: paragonThemeCss.defaults, - }); - scriptContents.brand = this.addToScriptContents({ - version: this.paragon.version, - coreCssAsset: brandCoreCssAsset, - themeVariantCssAssets: brandThemeVariantCssAssets, - defaults: brandThemeCss.defaults, - }); - - const originalSource = file.source.source(); - console.log('scriptContents', JSON.stringify(scriptContents, null, 2)); - const newSource = this.insertScriptContentsIntoDocument({ - originalSource, - coreCssAsset: paragonCoreCssAsset, - themeVariantCssAssets: paragonThemeVariantCssAssets, - scriptContents, + // Iterate through each configured handler, passing the compilation to each. + this.processAssetsHandlers.forEach(async (handler) => { + await handler(compilation); }); - compilation.updateAsset('index.html', new sources.RawSource(newSource.source())); }, ); }); diff --git a/lib/plugins/paragon-webpack-plugin/utils.js b/lib/plugins/paragon-webpack-plugin/utils.js new file mode 100644 index 000000000..10835ca9c --- /dev/null +++ b/lib/plugins/paragon-webpack-plugin/utils.js @@ -0,0 +1,388 @@ +const { sources } = require('webpack'); +const parse5 = require('parse5'); +const axios = require('axios'); + +async function getMfeRuntimeConfig() { + const { + APP_ID, + MFE_CONFIG_API_URL, + } = process.env; + const queryParams = new URLSearchParams({ + mfe: APP_ID, + }); + const url = `${MFE_CONFIG_API_URL}?${queryParams.toString()}`; + const response = await axios.get(url); + return response.data; +} + +function getDescendantByTag(node, tag) { + for (let i = 0; i < node.childNodes?.length; i++) { + if (node.childNodes[i].tagName === tag) { + return node.childNodes[i]; + } + const result = getDescendantByTag(node.childNodes[i], tag); + if (result) { + return result; + } + } + return null; +} + +function findScriptInsertionPoint({ document, originalSource }) { + const bodyElement = getDescendantByTag(document, 'body'); + if (!bodyElement) { + throw new Error('Missing body element in index.html.'); + } + + // determine script insertion point + if (bodyElement.sourceCodeLocation?.endTag) { + return bodyElement.sourceCodeLocation.endTag.startOffset; + } + + // less accurate fallback + return originalSource.indexOf(''); +} + +function findStylesheetInsertionPoint({ document, source }) { + const headElement = getDescendantByTag(document, 'head'); + if (!headElement) { + throw new Error('Missing head element in index.html.'); + } + + // determine script insertion point + if (headElement.sourceCodeLocation?.startTag) { + return headElement.sourceCodeLocation.startTag.endOffset; + } + + // less accurate fallback + const headTagString = ''; + const headTagIndex = source.indexOf(headTagString); + return headTagIndex + headTagString.length; +} + +function minifyScript(script) { + return script + .replace(/>[\r\n ]+<') + .replace(/(<.*?>)|\s+/g, (m, $1) => { + if ($1) { return $1; } + return ' '; + }) + .trim(); +} + +function insertScriptContentsIntoDocument({ + originalSource, + scriptContents, +}) { + // parse file as html document + const document = parse5.parse(originalSource, { + sourceCodeLocationInfo: true, + }); + + // find the body element + const scriptInsertionPoint = findScriptInsertionPoint({ + document, + originalSource, + }); + + // create Paragon script to inject into the HTML document + const paragonScript = ``; + + // insert the Paragon script into the HTML document + const newSource = new sources.ReplaceSource( + new sources.RawSource(originalSource), + 'index.html', + ); + newSource.insert(scriptInsertionPoint, minifyScript(paragonScript)); + return newSource; +} + +function insertStylesheetsIntoDocument({ + source, + urls, +}) { + // parse file as html document + const document = parse5.parse(source, { + sourceCodeLocationInfo: true, + }); + if (!getDescendantByTag(document, 'head')) { + return undefined; + } + + const newSource = new sources.ReplaceSource( + new sources.RawSource(source), + 'index.html', + ); + + // insert the brand overrides styles into the HTML document + const stylesheetInsertionPoint = findStylesheetInsertionPoint({ + document, + source: newSource, + }); + + function createNewStylesheet(url) { + const baseLink = ``; + return baseLink; + } + + if (urls.default) { + const existingDefaultLink = getDescendantByTag(`link[href='${urls.default}']`); + if (!existingDefaultLink) { + // create link to inject into the HTML document + const stylesheetLink = createNewStylesheet(urls.default); + newSource.insert(stylesheetInsertionPoint, stylesheetLink); + } + } + + if (urls.brandOverride) { + const existingBrandLink = getDescendantByTag(`link[href='${urls.brandOverride}']`); + if (!existingBrandLink) { + // create link to inject into the HTML document + const stylesheetLink = createNewStylesheet(urls.brandOverride); + newSource.insert(stylesheetInsertionPoint, stylesheetLink); + } + } + + return newSource; +} + +function findCoreCssAsset(paragonAssets) { + return paragonAssets?.find((asset) => asset.name.includes('core') && asset.name.endsWith('.css')); +} + +function findThemeVariantCssAssets(paragonAssets, { + isBrandOverride = false, + brandThemeCss, + paragonThemeCss, +}) { + const themeVariantsSource = isBrandOverride ? brandThemeCss?.variants : paragonThemeCss?.variants; + const themeVariantCssAssets = {}; + Object.entries(themeVariantsSource || {}).forEach(([themeVariant, value]) => { + const foundThemeVariantAsset = paragonAssets.find((asset) => asset.name.includes(value.outputChunkName)); + if (!foundThemeVariantAsset) { + return; + } + themeVariantCssAssets[themeVariant] = { + fileName: foundThemeVariantAsset.name, + }; + }); + return themeVariantCssAssets; +} + +function getCssAssetsFromCompilation(compilation, { + isBrandOverride = false, + brandThemeCss, + paragonThemeCss, +}) { + const assetSubstring = isBrandOverride ? 'brand' : 'paragon'; + const paragonAssets = compilation.getAssets().filter(asset => asset.name.includes(assetSubstring) && asset.name.endsWith('.css')); + const coreCssAsset = findCoreCssAsset(paragonAssets); + const themeVariantCssAssets = findThemeVariantCssAssets(paragonAssets, { + isBrandOverride, + paragonThemeCss, + brandThemeCss, + }); + return { + coreCssAsset: { + fileName: coreCssAsset?.name, + }, + themeVariantCssAssets, + }; +} + +function addToScriptContents({ + version, + defaults, + coreCssAsset, + themeVariantCssAssets, +}) { + return { + version, + themeUrls: { + core: coreCssAsset, + variants: themeVariantCssAssets, + defaults, + }, + }; +} + +function generateScriptContents({ + paragonCoreCssAsset, + paragonThemeVariantCssAssets, + brandCoreCssAsset, + brandThemeVariantCssAssets, + paragonThemeCss, + paragonVersion, + brandThemeCss, + brandVersion, +}) { + const scriptContents = {}; + scriptContents.paragon = addToScriptContents({ + version: paragonVersion, + coreCssAsset: paragonCoreCssAsset, + themeVariantCssAssets: paragonThemeVariantCssAssets, + defaults: paragonThemeCss?.defaults, + }); + scriptContents.brand = addToScriptContents({ + version: brandVersion, + coreCssAsset: brandCoreCssAsset, + themeVariantCssAssets: brandThemeVariantCssAssets, + defaults: brandThemeCss?.defaults, + }); + return scriptContents; +} + +function injectMetadataIntoDocument(compilation, { + paragonThemeCss, + paragonVersion, + brandThemeCss, + brandVersion, +}) { + const file = compilation.getAsset('index.html'); + if (!file) { + return undefined; + } + const { + coreCssAsset: paragonCoreCssAsset, + themeVariantCssAssets: paragonThemeVariantCssAssets, + } = getCssAssetsFromCompilation(compilation, { + brandThemeCss, + paragonThemeCss, + }); + const { + coreCssAsset: brandCoreCssAsset, + themeVariantCssAssets: brandThemeVariantCssAssets, + } = getCssAssetsFromCompilation(compilation, { + isBrandOverride: true, + brandThemeCss, + paragonThemeCss, + }); + + const scriptContents = generateScriptContents({ + paragonCoreCssAsset, + paragonThemeVariantCssAssets, + brandCoreCssAsset, + brandThemeVariantCssAssets, + paragonThemeCss, + paragonVersion, + brandThemeCss, + brandVersion, + }); + + const originalSource = file.source.source(); + const newSource = insertScriptContentsIntoDocument({ + originalSource, + coreCssAsset: paragonCoreCssAsset, + themeVariantCssAssets: paragonThemeVariantCssAssets, + scriptContents, + }); + + compilation.updateAsset('index.html', new sources.RawSource(newSource.source())); + + return scriptContents; +} + +function handleVersionSubstitution({ url, wildcardKeyword, localVersion }) { + if (!url || !url.includes(wildcardKeyword) || !localVersion) { + return url; + } + return url.replace(wildcardKeyword, localVersion); +} + +function getParagonStylesheetUrls({ paragonThemeUrls, paragonVersion, brandVersion }) { + const paragonCoreCssUrl = typeof paragonThemeUrls.core.urls === 'object' ? paragonThemeUrls.core.urls.default : paragonThemeUrls.core.url; + const brandCoreCssUrl = typeof paragonThemeUrls.core.urls === 'object' ? paragonThemeUrls.core.urls.brandOverride : undefined; + + const defaultThemeVariants = paragonThemeUrls.defaults || {}; + + const coreCss = { + urls: { + default: handleVersionSubstitution({ url: paragonCoreCssUrl, wildcardKeyword: '$paragonVersion', localVersion: paragonVersion }), + brandOverride: handleVersionSubstitution({ url: brandCoreCssUrl, wildcardKeyword: '$brandVersion', localVersion: brandVersion }), + }, + }; + + const themeVariantsCss = {}; + const themeVariantsEntries = Object.entries(paragonThemeUrls.variants || {}); + themeVariantsEntries.forEach(([themeVariant, { url, urls }]) => { + const themeVariantMetadata = { urls: null }; + if (url) { + themeVariantMetadata.urls = { + default: handleVersionSubstitution({ + url, + wildcardKeyword: '$paragonVersion', + localVersion: paragonVersion, + }), + // If there is no brand override URL, then we don't need to do any version substitution + // but we still need to return the property. + brandOverride: undefined, + }; + } else { + themeVariantMetadata.urls = { + default: handleVersionSubstitution({ + url: urls.default, + wildcardKeyword: '$paragonVersion', + localVersion: paragonVersion, + }), + brandOverride: handleVersionSubstitution({ + url: urls.brandOverride, + wildcardKeyword: '$brandVersion', + localVersion: brandVersion, + }), + }; + } + themeVariantsCss[themeVariant] = themeVariantMetadata; + }); + + return { + core: coreCss, + variants: themeVariantsCss, + defaults: defaultThemeVariants, + }; +} + +function injectParagonCoreStylesheets({ + source, + paragonCoreCss, + paragonThemeCss, + brandThemeCss, +}) { + return insertStylesheetsIntoDocument({ + source, + urls: paragonCoreCss.urls, + paragonThemeCss, + brandThemeCss, + }); +} + +function injectParagonThemeVariantStylesheets({ + source, + paragonThemeVariantCss, + paragonThemeCss, + brandThemeCss, +}) { + let newSource = source; + Object.values(paragonThemeVariantCss).forEach(({ urls }) => { + newSource = insertStylesheetsIntoDocument({ + source: typeof newSource === 'object' ? newSource.source() : newSource, + urls, + paragonThemeCss, + brandThemeCss, + }); + }); + return newSource; +} + +module.exports = { + injectMetadataIntoDocument, + getMfeRuntimeConfig, + getParagonStylesheetUrls, + injectParagonCoreStylesheets, + injectParagonThemeVariantStylesheets, +}; diff --git a/package-lock.json b/package-lock.json index 974fba95a..d6aed64ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,7 @@ "@pmmmwh/react-refresh-webpack-plugin": "0.5.10", "@svgr/webpack": "8.0.1", "autoprefixer": "10.4.14", + "axios": "1.4.0", "babel-jest": "27.5.1", "babel-loader": "9.1.3", "babel-plugin-react-intl": "7.9.4", @@ -4028,6 +4029,29 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -10903,6 +10927,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", diff --git a/package.json b/package.json index 71dac7078..46602f190 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "@pmmmwh/react-refresh-webpack-plugin": "0.5.10", "@svgr/webpack": "8.0.1", "autoprefixer": "10.4.14", + "axios": "1.4.0", "babel-jest": "27.5.1", "babel-loader": "9.1.3", "babel-plugin-react-intl": "7.9.4", From 782b91c1a67e75660dece7b18fb7bdaa45ea7a9c Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Mon, 24 Jul 2023 00:34:57 -0400 Subject: [PATCH 19/23] fix: handle undefined this.paragonMetadata --- lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js index 1052912ca..2002ebb52 100644 --- a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +++ b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js @@ -122,8 +122,8 @@ class ParagonWebpackPlugin { paragonThemeCss, brandThemeCss, fallbackUrls: { - default: this.paragonMetadata.paragon.themeUrls.core.fileName, - brandOverride: this.paragonMetadata.brand.themeUrls.core.fileName, + default: this.paragonMetadata?.paragon.themeUrls.core.fileName, + brandOverride: this.paragonMetadata?.brand.themeUrls.core.fileName, }, }); From 5a7af2ef36c0a17cce4ba162f14c679d42c28a3d Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Mon, 24 Jul 2023 00:36:21 -0400 Subject: [PATCH 20/23] fix: remove fallbackUrls --- lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js index 2002ebb52..73b1bc611 100644 --- a/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +++ b/lib/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js @@ -121,10 +121,6 @@ class ParagonWebpackPlugin { paragonCoreCss, paragonThemeCss, brandThemeCss, - fallbackUrls: { - default: this.paragonMetadata?.paragon.themeUrls.core.fileName, - brandOverride: this.paragonMetadata?.brand.themeUrls.core.fileName, - }, }); // Inject theme variant CSS From 84c6d760770108f8104ae728281fad45dfe29a20 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Mon, 24 Jul 2023 00:42:13 -0400 Subject: [PATCH 21/23] chore: snapshots and resolve .eslintrc error --- example/.eslintrc.js | 3 --- example/src/__snapshots__/App.test.jsx.snap | 13 +++++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) delete mode 100644 example/.eslintrc.js diff --git a/example/.eslintrc.js b/example/.eslintrc.js deleted file mode 100644 index 3ef32b0a9..000000000 --- a/example/.eslintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -const config = require('../config/.eslintrc'); - -module.exports = config; diff --git a/example/src/__snapshots__/App.test.jsx.snap b/example/src/__snapshots__/App.test.jsx.snap index 607c03ee7..ced31190a 100644 --- a/example/src/__snapshots__/App.test.jsx.snap +++ b/example/src/__snapshots__/App.test.jsx.snap @@ -110,6 +110,19 @@ exports[`Basic test should render 1`] = `

    Exposed theme CSS files

    +

    + + Note: Depending on the versions of + + @edx/paragon + + and/or + + @edx/brand + + installed, it is expected that no exposed theme CSS assets be listed here. + +