From 09d914cb017152ad572a5c9a8863ba117db6d41e Mon Sep 17 00:00:00 2001 From: rotemr Date: Tue, 28 Jun 2022 00:57:03 +0300 Subject: [PATCH] Let there be leak --- .dockerignore | 5 + .env.example | 129 + .gitignore | 7 + CONTRIBUTING.md | 53 + LICENSE.md | 201 + README.md | 122 + SECURITY.md | 5 + docker-compose.dev.yml | 154 + docker-compose.override.example.yml | 27 + docker-compose.yml | 152 + elasticsearch/Dockerfile | 7 + elasticsearch/config/elasticsearch.yml | 15 + extensions/README.md | 1 + extensions/apm-server/Dockerfile | 3 + extensions/apm-server/README.md | 58 + extensions/apm-server/apm-server-compose.yml | 23 + extensions/apm-server/config/apm-server.yml | 8 + extensions/curator/Dockerfile | 13 + extensions/curator/README.md | 18 + extensions/curator/config/curator.yml | 24 + .../config/delete_log_files_curator.yml | 20 + extensions/curator/curator-compose.yml | 16 + extensions/curator/entrypoint.sh | 6 + extensions/enterprise-search/Dockerfile | 4 + extensions/enterprise-search/README.md | 119 + .../config/enterprise-search.yml | 27 + .../enterprise-search-compose.yml | 22 + extensions/logspout/Dockerfile | 5 + extensions/logspout/README.md | 28 + extensions/logspout/build.sh | 18 + extensions/logspout/logspout-compose.yml | 16 + extensions/logspout/modules.go | 9 + kibana/Dockerfile | 7 + kibana/config/kibana.yml | 15 + leaktopus_backend/.gitignore | 1 + leaktopus_backend/Dockerfile | 55 + leaktopus_backend/__init__.py | 0 leaktopus_backend/bin/docker-entrypoint-web | 14 + leaktopus_backend/bin/pip3-install | 13 + leaktopus_backend/config/__init__.py | 0 leaktopus_backend/config/gunicorn.py | 17 + leaktopus_backend/config/settings.py | 39 + leaktopus_backend/data/.keep | 0 leaktopus_backend/db/.keep | 0 leaktopus_backend/leaktopus/.gitignore | 2 + leaktopus_backend/leaktopus/__init__.py | 0 leaktopus_backend/leaktopus/app.py | 91 + .../leaktopus/common/__init__.py | 0 .../leaktopus/common/contributors.py | 45 + .../common/contributors_extractor.py | 105 + leaktopus_backend/leaktopus/common/cron.py | 10 + .../leaktopus/common/db_handler.py | 330 + .../leaktopus/common/db_updates.py | 60 + .../leaktopus/common/domains_scanner.py | 49 + .../leaktopus/common/elasticsearch_handler.py | 18 + .../leaktopus/common/github_indexer.py | 105 + .../leaktopus/common/leak_enhancer.py | 62 + .../leaktopus/common/leak_handler.py | 53 + .../leaktopus/common/scanner_async.py | 453 + leaktopus_backend/leaktopus/common/scans.py | 91 + .../leaktopus/common/secrets_scanner.py | 108 + .../leaktopus/common/sensitive_keywords.py | 43 + .../common/sensitive_keywords_extractor.py | 94 + .../leaktopus/common/teams_alerter.py | 40 + leaktopus_backend/leaktopus/common/updates.py | 43 + .../leaktopus/exceptions/__init__.py | 0 .../leaktopus/exceptions/scans.py | 3 + leaktopus_backend/leaktopus/extensions.py | 16 + .../leaktopus/models/__init__.py | 0 .../leaktopus/models/scan_status.py | 12 + .../leaktopus/routes/__init__.py | 0 .../leaktopus/routes/alerts/__init__.py | 0 .../leaktopus/routes/alerts/alerts_api.py | 39 + .../leaktopus/routes/github/__init__.py | 0 .../leaktopus/routes/github/github_api.py | 89 + .../leaktopus/routes/leaks/__init__.py | 0 .../leaktopus/routes/leaks/leaks_api.py | 145 + .../leaktopus/routes/scans/__init__.py | 0 .../leaktopus/routes/scans/scans_api.py | 227 + .../leaktopus/routes/system/__init__.py | 0 .../leaktopus/routes/system/system_api.py | 67 + leaktopus_backend/leaktopus/utils/__init__.py | 0 leaktopus_backend/leaktopus/utils/alerts.py | 23 + leaktopus_backend/requirements.txt | 29 + leaktopus_backend/secrets/config.yaml | 488 + leaktopus_backend/secrets/git-extract-diff | 8 + leaktopus_frontend/.gitignore | 23 + leaktopus_frontend/Dockerfile | 18 + leaktopus_frontend/README.md | 24 + leaktopus_frontend/babel.config.js | 5 + leaktopus_frontend/jsconfig.json | 19 + leaktopus_frontend/package-lock.json | 20181 ++++++++++++++++ leaktopus_frontend/package.json | 58 + leaktopus_frontend/public/assets/logo.png | Bin 0 -> 39591 bytes leaktopus_frontend/public/favicon.ico | Bin 0 -> 15406 bytes leaktopus_frontend/public/index.html | 49 + leaktopus_frontend/src/App.vue | 115 + leaktopus_frontend/src/assets/css/reset.css | 23 + .../src/components/ScansList.vue | 183 + leaktopus_frontend/src/config.json | 3 + leaktopus_frontend/src/main.js | 32 + leaktopus_frontend/src/router/index.js | 33 + .../src/views/GithubPrefsView.vue | 104 + leaktopus_frontend/src/views/LeaksView.vue | 3 + leaktopus_frontend/src/views/ScansView.vue | 17 + leaktopus_frontend/start-nginx.sh | 9 + leaktopus_frontend/vue.config.js | 5 + logos/logo-128.png | Bin 0 -> 7619 bytes logos/logo-white.png | Bin 0 -> 39591 bytes logos/logo-with-name-white.png | Bin 0 -> 42784 bytes logos/logo-with-name.png | Bin 0 -> 34848 bytes logos/logo.png | Bin 0 -> 32375 bytes logstash/Dockerfile | 7 + logstash/config/logstash.yml | 12 + logstash/pipeline/logstash.conf | 15 + scripts/ack_leak.sh | 6 + scripts/fetch_db.sh | 4 + scripts/frontend_sh.sh | 4 + scripts/push_db.sh | 5 + scripts/web_sh.sh | 4 + scripts/worker_sh.sh | 4 + 121 files changed, 25389 insertions(+) create mode 100644 .dockerignore create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 SECURITY.md create mode 100644 docker-compose.dev.yml create mode 100644 docker-compose.override.example.yml create mode 100644 docker-compose.yml create mode 100644 elasticsearch/Dockerfile create mode 100644 elasticsearch/config/elasticsearch.yml create mode 100644 extensions/README.md create mode 100644 extensions/apm-server/Dockerfile create mode 100644 extensions/apm-server/README.md create mode 100644 extensions/apm-server/apm-server-compose.yml create mode 100644 extensions/apm-server/config/apm-server.yml create mode 100644 extensions/curator/Dockerfile create mode 100644 extensions/curator/README.md create mode 100644 extensions/curator/config/curator.yml create mode 100644 extensions/curator/config/delete_log_files_curator.yml create mode 100644 extensions/curator/curator-compose.yml create mode 100755 extensions/curator/entrypoint.sh create mode 100644 extensions/enterprise-search/Dockerfile create mode 100644 extensions/enterprise-search/README.md create mode 100644 extensions/enterprise-search/config/enterprise-search.yml create mode 100644 extensions/enterprise-search/enterprise-search-compose.yml create mode 100644 extensions/logspout/Dockerfile create mode 100644 extensions/logspout/README.md create mode 100755 extensions/logspout/build.sh create mode 100644 extensions/logspout/logspout-compose.yml create mode 100644 extensions/logspout/modules.go create mode 100644 kibana/Dockerfile create mode 100644 kibana/config/kibana.yml create mode 100644 leaktopus_backend/.gitignore create mode 100644 leaktopus_backend/Dockerfile create mode 100644 leaktopus_backend/__init__.py create mode 100755 leaktopus_backend/bin/docker-entrypoint-web create mode 100755 leaktopus_backend/bin/pip3-install create mode 100644 leaktopus_backend/config/__init__.py create mode 100644 leaktopus_backend/config/gunicorn.py create mode 100644 leaktopus_backend/config/settings.py create mode 100644 leaktopus_backend/data/.keep create mode 100644 leaktopus_backend/db/.keep create mode 100644 leaktopus_backend/leaktopus/.gitignore create mode 100644 leaktopus_backend/leaktopus/__init__.py create mode 100644 leaktopus_backend/leaktopus/app.py create mode 100644 leaktopus_backend/leaktopus/common/__init__.py create mode 100644 leaktopus_backend/leaktopus/common/contributors.py create mode 100644 leaktopus_backend/leaktopus/common/contributors_extractor.py create mode 100644 leaktopus_backend/leaktopus/common/cron.py create mode 100644 leaktopus_backend/leaktopus/common/db_handler.py create mode 100644 leaktopus_backend/leaktopus/common/db_updates.py create mode 100644 leaktopus_backend/leaktopus/common/domains_scanner.py create mode 100644 leaktopus_backend/leaktopus/common/elasticsearch_handler.py create mode 100644 leaktopus_backend/leaktopus/common/github_indexer.py create mode 100644 leaktopus_backend/leaktopus/common/leak_enhancer.py create mode 100644 leaktopus_backend/leaktopus/common/leak_handler.py create mode 100644 leaktopus_backend/leaktopus/common/scanner_async.py create mode 100644 leaktopus_backend/leaktopus/common/scans.py create mode 100644 leaktopus_backend/leaktopus/common/secrets_scanner.py create mode 100644 leaktopus_backend/leaktopus/common/sensitive_keywords.py create mode 100644 leaktopus_backend/leaktopus/common/sensitive_keywords_extractor.py create mode 100644 leaktopus_backend/leaktopus/common/teams_alerter.py create mode 100644 leaktopus_backend/leaktopus/common/updates.py create mode 100644 leaktopus_backend/leaktopus/exceptions/__init__.py create mode 100644 leaktopus_backend/leaktopus/exceptions/scans.py create mode 100644 leaktopus_backend/leaktopus/extensions.py create mode 100644 leaktopus_backend/leaktopus/models/__init__.py create mode 100644 leaktopus_backend/leaktopus/models/scan_status.py create mode 100644 leaktopus_backend/leaktopus/routes/__init__.py create mode 100644 leaktopus_backend/leaktopus/routes/alerts/__init__.py create mode 100644 leaktopus_backend/leaktopus/routes/alerts/alerts_api.py create mode 100644 leaktopus_backend/leaktopus/routes/github/__init__.py create mode 100644 leaktopus_backend/leaktopus/routes/github/github_api.py create mode 100644 leaktopus_backend/leaktopus/routes/leaks/__init__.py create mode 100644 leaktopus_backend/leaktopus/routes/leaks/leaks_api.py create mode 100644 leaktopus_backend/leaktopus/routes/scans/__init__.py create mode 100644 leaktopus_backend/leaktopus/routes/scans/scans_api.py create mode 100644 leaktopus_backend/leaktopus/routes/system/__init__.py create mode 100644 leaktopus_backend/leaktopus/routes/system/system_api.py create mode 100644 leaktopus_backend/leaktopus/utils/__init__.py create mode 100644 leaktopus_backend/leaktopus/utils/alerts.py create mode 100644 leaktopus_backend/requirements.txt create mode 100644 leaktopus_backend/secrets/config.yaml create mode 100755 leaktopus_backend/secrets/git-extract-diff create mode 100644 leaktopus_frontend/.gitignore create mode 100644 leaktopus_frontend/Dockerfile create mode 100644 leaktopus_frontend/README.md create mode 100644 leaktopus_frontend/babel.config.js create mode 100644 leaktopus_frontend/jsconfig.json create mode 100644 leaktopus_frontend/package-lock.json create mode 100644 leaktopus_frontend/package.json create mode 100644 leaktopus_frontend/public/assets/logo.png create mode 100644 leaktopus_frontend/public/favicon.ico create mode 100644 leaktopus_frontend/public/index.html create mode 100644 leaktopus_frontend/src/App.vue create mode 100644 leaktopus_frontend/src/assets/css/reset.css create mode 100644 leaktopus_frontend/src/components/ScansList.vue create mode 100644 leaktopus_frontend/src/config.json create mode 100644 leaktopus_frontend/src/main.js create mode 100644 leaktopus_frontend/src/router/index.js create mode 100644 leaktopus_frontend/src/views/GithubPrefsView.vue create mode 100644 leaktopus_frontend/src/views/LeaksView.vue create mode 100644 leaktopus_frontend/src/views/ScansView.vue create mode 100644 leaktopus_frontend/start-nginx.sh create mode 100644 leaktopus_frontend/vue.config.js create mode 100644 logos/logo-128.png create mode 100644 logos/logo-white.png create mode 100644 logos/logo-with-name-white.png create mode 100644 logos/logo-with-name.png create mode 100644 logos/logo.png create mode 100644 logstash/Dockerfile create mode 100644 logstash/config/logstash.yml create mode 100644 logstash/pipeline/logstash.conf create mode 100755 scripts/ack_leak.sh create mode 100755 scripts/fetch_db.sh create mode 100755 scripts/frontend_sh.sh create mode 100755 scripts/push_db.sh create mode 100755 scripts/web_sh.sh create mode 100755 scripts/worker_sh.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ceca094 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.DS_Store +.idea +.git +.dockerignore +README.md \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..11809a4 --- /dev/null +++ b/.env.example @@ -0,0 +1,129 @@ +# Default values are optimized for production to avoid having to configure +# much in production. +# +# However it should be easy to get going in development too. If you see an +# uncommented option that means it's either mandatory to set it or it's being +# overwritten in development to make your life easier. + +# Rather than use the directory name, let's control the name of the project. +export COMPOSE_PROJECT_NAME=leaktopus + +# In development avoid writing out bytecode to __pycache__ directories. +#PYTHONDONTWRITEBYTECODE= +export PYTHONDONTWRITEBYTECODE=true + +# You should generate a random string of 99+ characters for this value in prod. +# You can generate secure secrets by running: ./run flask secrets +export SECRET_KEY=insecure_key_for_dev + +# Which environment is running? These should be "development" or "production". +#export FLASK_ENV=production +export FLASK_ENV=development +#export NODE_ENV=production +export NODE_ENV=development + +# In development with Docker Desktop / Linux the default value should work. +# If you have Docker running in a custom VM, put the VM's IP here instead. +# +# In production you'll want to set this to your domain name or whatever you +# plan to access in your browser, such as example.com. +#export SERVER_NAME=localhost:8000 + +# The bind port for gunicorn. +# +# Be warned that if you change this value you'll need to change 8000 in both +# your Dockerfile and in a few spots in docker-compose.yml due to the nature of +# how this value can be set (Docker Compose doesn't support nested ENV vars). +#export PORT=8000 + +# How many workers and threads should your app use? WEB_CONCURRENCY defaults +# to the server's CPU count * 2. That is a good starting point. In development +# it's a good idea to use 1 to avoid race conditions when debugging. +#export WEB_CONCURRENCY= +export WEB_CONCURRENCY=1 +#export PYTHON_MAX_THREADS=1 + +# Do you want code reloading to work with the gunicorn app server? +#export WEB_RELOAD=false +export WEB_RELOAD=true + +# Should the Webpack watcher use polling? Not all Docker hosts support inotify. +# If you find your assets aren't updating in development then set this to true. +#export WEBPACK_WATCHER_POLL=false + +## What mail server should you connect to? +#export MAIL_SERVER=smtp.gmail.com +#export MAIL_PORT=587 +#export MAIL_USE_TLS=true +#export MAIL_USE_SSL=false +export MAIL_USERNAME= +export MAIL_PASSWORD= +#export MAIL_DEFAULT_SENDER=contact@local.host + +## Connection string to Redis. This will be used to connect directly to Redis +# and for Celery. You can always split your Redis servers up later if needed. +#export REDIS_URL=redis://redis:6379/0 + +# You can choose between DEBUG, INFO, WARNING, ERROR, CRITICAL or FATAL. +# DEBUG tends to get noisy but it could be useful for troubleshooting. +#export CELERY_LOG_LEVEL=info + +# Should Docker restart your containers if they go down in unexpected ways? +#export DOCKER_RESTART_POLICY=unless-stopped +export DOCKER_RESTART_POLICY=no + +# What healthcheck test command do you want to run? In development, having it +# curl your web server will result in a lot of log spam, so setting it to +# /bin/true is an easy way to make the healthcheck do basically nothing. +#export DOCKER_WEB_HEALTHCHECK_TEST=curl localhost:8000/up +export DOCKER_WEB_HEALTHCHECK_TEST=/bin/true + +# What ip:port should be published back to the Docker host for the app server? +# If you're using Docker Toolbox or a custom VM you can't use 127.0.0.1. This +# is being overwritten in dev to be compatible with more dev environments. +# +# If you have a port conflict because something else is using 8000 then you +# can either stop that process or change this 8000 to be something else. +# +# Use the default in production to avoid having gunicorn directly accessible to +# the internet since it'll very likely be behind nginx or a load balancer. +#export DOCKER_WEB_PORT_FORWARD=127.0.0.1:8000 +export DOCKER_WEB_PORT_FORWARD=8000 + +# What volume path should be used? In development we want to volume mount +# everything so we can develop our code without rebuilding our Docker images. +#export DOCKER_WEB_VOLUME=./public:/app/public +export DOCKER_WEB_VOLUME=.:/app + +# What CPU and memory constraints will be added to your services? When left at +# 0, they will happily use as much as needed. +#export DOCKER_REDIS_CPUS=0 +#export DOCKER_REDIS_MEMORY=0 +#export DOCKER_WEB_CPUS=0 +#export DOCKER_WEB_MEMORY=0 +#export DOCKER_WORKER_CPUS=0 +#export DOCKER_WORKER_MEMORY=0 + +# GitPython Variables +export GIT_PYTHON_REFRESH=quiet + +export ELK_VERSION=7.17.4 + +export GITHUB_ACCESS_TOKEN=[GITHUB_ACCESS_TOKEN] +export ES_INDEXING_ENABLED=1 +export ES_HOST=elasticsearch +export ES_PORT=9200 +export ES_USER=elastic +export ES_PASS=changeme +export CLONES_DIR=/data/ + +# Cron Interval in seconds, default of 15 minutes. +export CRON_INTERVAL=900 +# Teams webhook +#export TEAMS_WEBHOOK_URL=https://company-name.webhook.office.com/webhookb2/token + +# HTTPS enabled flag +export HTTPS_ENABLED=0 + +# Frontend environment variables +export LEAKTOPUS_API_URL=http://localhost:8000/ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b03a02c --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.idea +.DS_Store +.env +app/*.pem +docker-compose.override.yml +venv +*.sqlite diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..631d168 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,53 @@ +# Contribution guidelines + +## Development Environment Setup +If you wish to contribute to Leaktopus or run it in development mode, please follow this section. + +### Customized Docker compose for development +The dev version of docker-compose shares the volumes with the host machine for easy debugging and development. +```bash +docker-compose -f docker-compose.dev.yml -f docker-compose.override.yml up +``` + +### Without Docker (Manual) +#### Prerequisites + - Python > 3.7 + - Pip + - Node > 17.x +#### Backend +```bash +cd leaktopus_backend + +# Required for using our .env file. +pip install python-dotenv + +# Install all the dependencies. +pip install -r requirements.txt + +# Run the application locally. +FLASK_APP="`pwd`/leaktopus/app.py" FLASK_DEBUG=1 flask run -p 8000 + +# To debug celery worker add these lines to the setting.py file. +import dotenv +dotenv.load_dotenv('./.env') +``` + +#### Frontend +```bash +cd leaktopus_frontend + +npm install +npm run serve +``` +--- + +## Development/Monitoring Services +In addition to the services mentioned on the README.md file, +the following services can be used for development and advanced monitoring purposes: + +| Service | Port | Documentation | +| ------------- | ------------- | ------------- | +| Flower | 5555 | https://flower.readthedocs.io/en/latest/ | +| Redis Commander | 8081 | https://github.com/joeferner/redis-commander | + +_See docker-compose.override.example.yml for deployment examples._ \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..9c8f3ea --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..40e8cac --- /dev/null +++ b/README.md @@ -0,0 +1,122 @@ +
+ +![](logos/logo-128.png) + +# :sweat_drops:Leaktopus:octopus: + +**Helps in keeping your source code under control.** + +Based on the **Code C.A.I.N** framework: + +:bird: **C**anarytokens + +:mag_right: **A**utomated **I**nspection + +:bomb: **N**eutralization + +--- + +[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +![](https://img.shields.io/github/stars/Playtika/leaktopus?style=social) + +
+ +--- + +## Key Features + - **Plug&Play** - one line installation with Docker. + - **Scan various sources** containing a set of keywords, e.g. `ORGANIZATION-NAME.com`. + + Currently supports: + - GitHub + - Repositories + - Gists _(coming soon)_ + - Paste sites (e.g., PasteBin) _(coming soon)_ + - **Filter results** with a built-in heuristics engine. + - **Enhance results with IOLs** (Indicators Of Leak): + - Secrets + - Domains _(highlight organizational domains)_ + - Emails _(highlight organizational email addresses)_ + - Contributors + - Sensitive keywords (e.g., canary token, internal domains) + - **Find secrets** in the found sources (including Git repos commits history): + - With [Shhgit][1] (using a customized rules list). + - With [TruffleHog][2]. + - Allows to **ignore** public sources, (e.g., "junk" repositories by web crawlers). + - **OOTB ignore list** of common "junk" sources. + - **Acknowledge a leak**, and only get notified if the source has been modified since the previous scan. + - **Built-in ELK** to search for data in leaks (including full index of Git repositories that contains a "leak"). + - **Notify on new leaks** + - MS Teams Webhook. + - Cortex XSOAR® (by Palo Alto Networks) Integration _(Coming soon)_ + +## Technology Stack +- Fully Dockerized. +- API-first Python Flask backend. +- Decoupled Vue.js (3.x) frontend. +- SQLite DB. +- Async scans with Celery + Redis queues. + +## Prerequisites + - Docker-Compose + +## Installation + - Run Leaktopus + ```bash + docker-compose up -d + ``` + - Initiate the installation sequence by accessing the installation API. + Just open http://{LEAKTOPUS_HOST}:8000/api/install in your browser. + - Check that the API is up and running at http://{LEAKTOPUS_HOST}:8000/up + - The UI should be available at http://{LEAKTOPUS_HOST}:8080 + + +## Updating Leaktopus +If you wish to upgrade your Leaktopus version, just follow the following steps. + + - Reinstall Leaktopus (data won't be deleted). + ```bash + # Force image recreation + docker-compose up --force-recreate --build + ``` + - Run the DB update by calling its API (should be required after some updates). + http://{LEAKTOPUS_HOST}/api/updatedb + +## Results Filtering Heuristic Engine +The built-in heuristic engine is filter the search results by: +- Content: + - More than X emails containing other domains. + - More than X domains containing other domains. + - More than X stars. + - More than X forks. +- Sources ignore list. + +## API Documentation +OpenAPI documentation is available in http://{LEAKTOPUS_HOST}:8000/apidocs. + +## Leaktopus Services +| Service | Port | Mandatory/Optional | +| ------------- | ------------- | ------------- | +| Backend (API) | 8000 | Mandatory | +| Backend (Worker) | N/A | Mandatory | +| Redis | 6379 | Mandatory | +| Frontend | 8080 | Optional | +| Elasticsearch | 9200 | Optional | +| Logstash | 5000 | Optional | +| Kibana | 5601 | Optional | + +_The above can be customized by using a custom docker-compose.yml file._ + +## Security Notes +As for now, Leaktopus does not provide any authentication mechanism. +Make sure that you are not exposing it to the world, and doing your best to **restrict access to your Leaktopus instance(s)**. + +## Contributing +Contributions are mostly welcome. + +Please follow our contribution guidelines and documentation. +Contributions are very welcome! Please see our [contribution guidelines first][3]. + +[1]: +[2]: +[3]: \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..7c2dec9 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,5 @@ +Please follow the guidelines specified in https://www.playtika.com/.well-known/security.txt . + +Do **not** report on possible security issues via GitHub's Issues. + +Please specify the name of the project (`leaktopus`) when contacting us. \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..6a3a8e0 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,154 @@ +version: "3.4" + +x-app: &default-app + build: + context: "leaktopus_backend/." + target: "app" + args: + - "FLASK_ENV=${FLASK_ENV:-production}" + depends_on: + - redis + env_file: + - ".env" + restart: "${DOCKER_RESTART_POLICY:-unless-stopped}" + stop_grace_period: "3s" + tty: true + volumes: + - "./leaktopus_backend/db/:/db" + - "./leaktopus_backend/:/app" + +services: + redis: + deploy: + resources: + limits: + cpus: "${DOCKER_REDIS_CPUS:-0}" + memory: "${DOCKER_REDIS_MEMORY:-0}" + env_file: + - ".env" + image: "redis:6.0.10-buster" + restart: "${DOCKER_RESTART_POLICY:-unless-stopped}" + stop_grace_period: "3s" + volumes: + - "redis:/data" + ports: + - "6379:6379" + + web: + <<: *default-app + deploy: + resources: + limits: + cpus: "${DOCKER_WEB_CPUS:-0}" + memory: "${DOCKER_WEB_MEMORY:-0}" + healthcheck: + test: "${DOCKER_WEB_HEALTHCHECK_TEST:-curl localhost:8000/up}" + interval: "60s" + timeout: "3s" + start_period: "5s" + retries: 3 + ports: + - "${DOCKER_WEB_PORT_FORWARD:-localhost:8000}:8000" + + frontend: + build: "./leaktopus_frontend" + deploy: + resources: + limits: + cpus: "${DOCKER_WEB_CPUS:-0}" + memory: "${DOCKER_WEB_MEMORY:-0}" + env_file: + - ".env" + ports: + - "8080:80" + + worker: + <<: *default-app + command: celery -A "leaktopus.app.celery_app" worker --beat -l "${CELERY_LOG_LEVEL:-info}" +# depends_on: +# - elasticsearch + deploy: + resources: + limits: + cpus: "${DOCKER_WORKER_CPUS:-0}" + memory: "${DOCKER_WORKER_MEMORY:-0}" + volumes: + - "./leaktopus_backend/data/:/data" + - "./leaktopus_backend/db/:/db" + - "./leaktopus_backend/:/app" + +# elasticsearch: +# build: +# context: elasticsearch/ +# args: +# ELK_VERSION: $ELK_VERSION +# volumes: +# - type: bind +# source: ./elasticsearch/config/elasticsearch.yml +# target: /usr/share/elasticsearch/config/elasticsearch.yml +# read_only: true +# - type: volume +# source: elasticsearch +# target: /usr/share/elasticsearch/data +# ports: +# - "9200:9200" +# - "9300:9300" +# environment: +# ES_JAVA_OPTS: "-Xmx256m -Xms256m" +# ELASTIC_PASSWORD: $ES_PASS +# # Use single node discovery in order to disable production mode and avoid bootstrap checks +# # see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html +# discovery.type: single-node + +# logstash: +# build: +# context: logstash/ +# args: +# ELK_VERSION: $ELK_VERSION +# volumes: +# - type: bind +# source: ./logstash/config/logstash.yml +# target: /usr/share/logstash/config/logstash.yml +# read_only: true +# - type: bind +# source: ./logstash/pipeline +# target: /usr/share/logstash/pipeline +# read_only: true +# ports: +# - "5000:5000/tcp" +# - "5000:5000/udp" +# - "9600:9600" +# environment: +# LS_JAVA_OPTS: "-Xmx256m -Xms256m" +# ES_HOST: $ES_HOST +# ES_PORT: $ES_PORT +# ES_USER: $ES_USER +# ES_PASS: $ES_PASS +# depends_on: +# - elasticsearch + +# kibana: +# build: +# context: kibana/ +# args: +# ELK_VERSION: $ELK_VERSION +# environment: +# ES_HOST: $ES_HOST +# ES_PORT: $ES_PORT +# ES_USER: $ES_USER +# ES_PASS: $ES_PASS +# volumes: +# - type: bind +# source: ./kibana/config/kibana.yml +# target: /usr/share/kibana/config/kibana.yml +# read_only: true +# ports: +# - "5601:5601" +# depends_on: +# - elasticsearch + +volumes: + db: {} + data: {} + redis: {} +# elasticsearch: {} diff --git a/docker-compose.override.example.yml b/docker-compose.override.example.yml new file mode 100644 index 0000000..d8cda03 --- /dev/null +++ b/docker-compose.override.example.yml @@ -0,0 +1,27 @@ +version: "3.4" + +services: + web: + env_file: + - "leaktopus_frontend/.env" + + redis-commander: + container_name: redis-commander + hostname: redis-commander + image: rediscommander/redis-commander:latest + restart: always + environment: + - REDIS_HOSTS=local:redis:6379 + ports: + - "8081:8081" + + flower: + container_name: flower + hostname: flower + image: mher/flower:latest + restart: always + environment: + - CELERY_BROKER_URL=redis://redis:6379 + - FLOWER_PORT=5555 + ports: + - "5555:5555" diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..05c186c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,152 @@ +version: "3.4" + +x-app: &default-app + build: + context: "leaktopus_backend/." + target: "app" + args: + - "FLASK_ENV=${FLASK_ENV:-production}" + depends_on: + - redis + env_file: + - ".env" + restart: "${DOCKER_RESTART_POLICY:-unless-stopped}" + stop_grace_period: "3s" + tty: true + volumes: + - "db:/db" + +services: + redis: + deploy: + resources: + limits: + cpus: "${DOCKER_REDIS_CPUS:-0}" + memory: "${DOCKER_REDIS_MEMORY:-0}" + env_file: + - ".env" + image: "redis:6.0.10-buster" + restart: "${DOCKER_RESTART_POLICY:-unless-stopped}" + stop_grace_period: "3s" + volumes: + - "redis:/data" + ports: + - "6379:6379" + + web: + <<: *default-app + deploy: + resources: + limits: + cpus: "${DOCKER_WEB_CPUS:-0}" + memory: "${DOCKER_WEB_MEMORY:-0}" + healthcheck: + test: "${DOCKER_WEB_HEALTHCHECK_TEST:-curl localhost:8000/up}" + interval: "60s" + timeout: "3s" + start_period: "5s" + retries: 3 + ports: + - "${DOCKER_WEB_PORT_FORWARD:-localhost:8000}:8000" + + frontend: + build: "./leaktopus_frontend" + deploy: + resources: + limits: + cpus: "${DOCKER_WEB_CPUS:-0}" + memory: "${DOCKER_WEB_MEMORY:-0}" + env_file: + - ".env" + ports: + - "8080:80" + + worker: + <<: *default-app + command: celery -A "leaktopus.app.celery_app" worker --beat -l "${CELERY_LOG_LEVEL:-info}" + depends_on: + - elasticsearch + deploy: + resources: + limits: + cpus: "${DOCKER_WORKER_CPUS:-0}" + memory: "${DOCKER_WORKER_MEMORY:-0}" + volumes: + - "data:/data" + - "db:/db" + + elasticsearch: + build: + context: elasticsearch/ + args: + ELK_VERSION: $ELK_VERSION + volumes: + - type: bind + source: ./elasticsearch/config/elasticsearch.yml + target: /usr/share/elasticsearch/config/elasticsearch.yml + read_only: true + - type: volume + source: elasticsearch + target: /usr/share/elasticsearch/data + ports: + - "9200:9200" + - "9300:9300" + environment: + ES_JAVA_OPTS: "-Xmx256m -Xms256m" + ELASTIC_PASSWORD: $ES_PASS + # Use single node discovery in order to disable production mode and avoid bootstrap checks + # see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html + discovery.type: single-node + + logstash: + build: + context: logstash/ + args: + ELK_VERSION: $ELK_VERSION + volumes: + - type: bind + source: ./logstash/config/logstash.yml + target: /usr/share/logstash/config/logstash.yml + read_only: true + - type: bind + source: ./logstash/pipeline + target: /usr/share/logstash/pipeline + read_only: true + ports: + - "5000:5000/tcp" + - "5000:5000/udp" + - "9600:9600" + environment: + LS_JAVA_OPTS: "-Xmx256m -Xms256m" + ES_HOST: $ES_HOST + ES_PORT: $ES_PORT + ES_USER: $ES_USER + ES_PASS: $ES_PASS + depends_on: + - elasticsearch + + kibana: + build: + context: kibana/ + args: + ELK_VERSION: $ELK_VERSION + environment: + ES_HOST: $ES_HOST + ES_PORT: $ES_PORT + ES_USER: $ES_USER + ES_PASS: $ES_PASS + volumes: + - type: bind + source: ./kibana/config/kibana.yml + target: /usr/share/kibana/config/kibana.yml + read_only: true + ports: + - "5601:5601" + depends_on: + - elasticsearch + +volumes: + db: {} + data: {} + redis: {} + elasticsearch: {} diff --git a/elasticsearch/Dockerfile b/elasticsearch/Dockerfile new file mode 100644 index 0000000..3928544 --- /dev/null +++ b/elasticsearch/Dockerfile @@ -0,0 +1,7 @@ +ARG ELK_VERSION + +# https://www.docker.elastic.co/ +FROM docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION} + +# Add your elasticsearch plugins setup here +# Example: RUN elasticsearch-plugin install analysis-icu diff --git a/elasticsearch/config/elasticsearch.yml b/elasticsearch/config/elasticsearch.yml new file mode 100644 index 0000000..5255949 --- /dev/null +++ b/elasticsearch/config/elasticsearch.yml @@ -0,0 +1,15 @@ +--- +## Default Elasticsearch configuration from Elasticsearch base image. +## https://github.com/elastic/elasticsearch/blob/master/distribution/docker/src/docker/config/elasticsearch.yml +# +cluster.name: "docker-cluster" +network.host: 0.0.0.0 + +## X-Pack settings +## see https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-xpack.html +# +xpack.license.self_generated.type: basic +xpack.monitoring.collection.enabled: true + +# see https://discuss.elastic.co/t/security-exception-current-license-is-non-compliant-for-security-with-license-expired-feature-security/97351 +xpack.security.enabled: false diff --git a/extensions/README.md b/extensions/README.md new file mode 100644 index 0000000..bdbb3b0 --- /dev/null +++ b/extensions/README.md @@ -0,0 +1 @@ +Third-party extensions that enable extra integrations with the ELK stack. diff --git a/extensions/apm-server/Dockerfile b/extensions/apm-server/Dockerfile new file mode 100644 index 0000000..2c611df --- /dev/null +++ b/extensions/apm-server/Dockerfile @@ -0,0 +1,3 @@ +ARG ELK_VERSION + +FROM docker.elastic.co/apm/apm-server:${ELK_VERSION} diff --git a/extensions/apm-server/README.md b/extensions/apm-server/README.md new file mode 100644 index 0000000..cddad91 --- /dev/null +++ b/extensions/apm-server/README.md @@ -0,0 +1,58 @@ +# APM Server extension + +The APM Server receives data from APM agents and transforms them into Elasticsearch documents that can be visualised in +Kibana. + +## Usage + +To include APM Server in the stack, run Docker Compose from the root of the repository with an additional command line +argument referencing the `apm-server-compose.yml` file: + +```console +$ docker-compose -f docker-compose.yml -f extensions/apm-server/apm-server-compose.yml up +``` + +Meanwhile, you can navigate to the **APM** application in Kibana and follow the setup instructions to get started. + +## Connecting an agent to APM Server + +The most basic configuration to send traces to APM server is to specify the `SERVICE_NAME` and `SERVICE_URL`. Here is an +example Python Flask configuration: + +```python +import elasticapm +from elasticapm.contrib.flask import ElasticAPM + +from flask import Flask + +app = Flask(__name__) +app.config['ELASTIC_APM'] = { + # Set required service name. Allowed characters: + # a-z, A-Z, 0-9, -, _, and space + 'SERVICE_NAME': 'PYTHON_FLASK_TEST_APP', + + # Set custom APM Server URL (default: http://localhost:8200) + 'SERVER_URL': 'http://apm-server:8200', + + 'DEBUG': True, +} +``` + +More configuration settings can be found for each language in the following documentation page: [Install APM +agents][apm-agents]. + +## Checking connectivity and importing default APM dashboards + +1. On the Kibana home page, click `Add APM` under the _Observability_ panel. +2. Click `Check APM Server status` to confirm the server is up and running. +3. Click `Check agent status` to verify your agent has registered properly. +4. Click `Load Kibana objects` to create an index pattern for APM. +5. Click `Launch APM` to be taken to the APM dashboard. + +## See also + +[Running APM Server on Docker][apm-docker] + + +[apm-agents]: https://www.elastic.co/guide/en/apm/get-started/current/agents.html +[apm-docker]: https://www.elastic.co/guide/en/apm/server/current/running-on-docker.html diff --git a/extensions/apm-server/apm-server-compose.yml b/extensions/apm-server/apm-server-compose.yml new file mode 100644 index 0000000..bd21a2d --- /dev/null +++ b/extensions/apm-server/apm-server-compose.yml @@ -0,0 +1,23 @@ +version: '3.2' + +services: + apm-server: + build: + context: extensions/apm-server/ + args: + ELK_VERSION: $ELK_VERSION + command: + # Disable strict permission checking on 'apm-server.yml' configuration file + # https://www.elastic.co/guide/en/beats/libbeat/current/config-file-permissions.html + - --strict.perms=false + volumes: + - type: bind + source: ./extensions/apm-server/config/apm-server.yml + target: /usr/share/apm-server/apm-server.yml + read_only: true + ports: + - '8200:8200' + networks: + - elk + depends_on: + - elasticsearch diff --git a/extensions/apm-server/config/apm-server.yml b/extensions/apm-server/config/apm-server.yml new file mode 100644 index 0000000..7740294 --- /dev/null +++ b/extensions/apm-server/config/apm-server.yml @@ -0,0 +1,8 @@ +apm-server: + host: 0.0.0.0:8200 + +output: + elasticsearch: + hosts: ['http://elasticsearch:9200'] + username: ${ES_USER} + password: ${ES_PASS} diff --git a/extensions/curator/Dockerfile b/extensions/curator/Dockerfile new file mode 100644 index 0000000..bf51d3d --- /dev/null +++ b/extensions/curator/Dockerfile @@ -0,0 +1,13 @@ +FROM alpine:3.8 + +ENV CURATOR_VERSION=5.8.1 + +RUN apk --update add --no-cache tini python py-pip \ + && pip install elasticsearch-curator==${CURATOR_VERSION} + +COPY entrypoint.sh / + +WORKDIR /usr/share/curator +COPY config ./config + +ENTRYPOINT ["/entrypoint.sh"] diff --git a/extensions/curator/README.md b/extensions/curator/README.md new file mode 100644 index 0000000..ab91f53 --- /dev/null +++ b/extensions/curator/README.md @@ -0,0 +1,18 @@ +# Curator + +Elasticsearch Curator helps you curate or manage your indices. + +## Usage + +If you want to include the Curator extension, run Docker Compose from the root of the repository with an additional +command line argument referencing the `curator-compose.yml` file: + +```bash +$ docker-compose -f docker-compose.yml -f extensions/curator/curator-compose.yml up +``` + +All configuration files are available in the `config/` directory. + +## Documentation + +https://github.com/elastic/curator diff --git a/extensions/curator/config/curator.yml b/extensions/curator/config/curator.yml new file mode 100644 index 0000000..7759683 --- /dev/null +++ b/extensions/curator/config/curator.yml @@ -0,0 +1,24 @@ +--- +# Remember, leave a key empty if there is no value. None will be a string, +# not a Python "NoneType" +client: + hosts: + - ${ELASTICSEARCH_HOST} + port: ${ELASTICSEARCH_PORT} + url_prefix: + use_ssl: False + certificate: + client_cert: + client_key: + aws_key: + aws_secret_key: + aws_region: + ssl_no_validate: False + http_auth: + timeout: 30 + master_only: False + +logging: + loglevel: DEBUG + logfile: + logformat: default diff --git a/extensions/curator/config/delete_log_files_curator.yml b/extensions/curator/config/delete_log_files_curator.yml new file mode 100644 index 0000000..f39c35f --- /dev/null +++ b/extensions/curator/config/delete_log_files_curator.yml @@ -0,0 +1,20 @@ +actions: + 1: + action: delete_indices + description: >- + Delete indices. Find which to delete by first limiting the list to logstash- + prefixed indices. Then further filter those to prevent deletion of anything + less than ${UNIT_COUNT} days old. Ignore the error if the filter does not result in an + actionable list of indices (ignore_empty_list) and exit cleanly. + options: + ignore_empty_list: True + disable_action: False + filters: + - filtertype: pattern + kind: prefix + value: logstash- + - filtertype: age + source: creation_date + direction: older + unit: days + unit_count: ${UNIT_COUNT} diff --git a/extensions/curator/curator-compose.yml b/extensions/curator/curator-compose.yml new file mode 100644 index 0000000..e14a011 --- /dev/null +++ b/extensions/curator/curator-compose.yml @@ -0,0 +1,16 @@ +version: '3.2' + +services: + curator: + build: + context: extensions/curator/ + environment: + ELASTICSEARCH_HOST: elasticsearch + CRON: 0 0 * * * + CONFIG_FILE: /usr/share/curator/config/curator.yml + COMMAND: /usr/share/curator/config/delete_log_files_curator.yml + UNIT_COUNT: 2 + networks: + - elk + depends_on: + - elasticsearch diff --git a/extensions/curator/entrypoint.sh b/extensions/curator/entrypoint.sh new file mode 100755 index 0000000..7c814d6 --- /dev/null +++ b/extensions/curator/entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +echo "$CRON /usr/bin/curator --config ${CONFIG_FILE} ${COMMAND}" >>/etc/crontabs/root + +# https://github.com/krallin/tini/blob/master/README.md#subreaping +tini -s -- crond -f -d 8 -l 8 diff --git a/extensions/enterprise-search/Dockerfile b/extensions/enterprise-search/Dockerfile new file mode 100644 index 0000000..7edd720 --- /dev/null +++ b/extensions/enterprise-search/Dockerfile @@ -0,0 +1,4 @@ +ARG ELK_VERSION + +# https://www.docker.elastic.co/ +FROM docker.elastic.co/enterprise-search/enterprise-search:${ELK_VERSION} diff --git a/extensions/enterprise-search/README.md b/extensions/enterprise-search/README.md new file mode 100644 index 0000000..53b6021 --- /dev/null +++ b/extensions/enterprise-search/README.md @@ -0,0 +1,119 @@ +# Enterprise Search extension + +Elastic Enterprise Search is a suite of products for search applications backed by the Elastic Stack. + +## Requirements + +* 2 GB of free RAM, on top of the resources required by the other stack components and extensions. + +Enterprise Search exposes the TCP port `3002` for its Web UI and API. + +## Usage + +### Generate an encryption key + +Enterprise Search requires one or more [encryption keys][enterprisesearch-encryption] to be configured before the +initial startup. Failing to do so prevents the server from starting. + +Encryption keys can contain any series of characters. Elastic recommends using 256-bit keys for optimal security. + +Those encryption keys must be added manually to the [`config/enterprise-search.yml`][config-enterprisesearch] file. By +default, the list of encryption keys is empty and must be populated using one of the following formats: + +```yaml +secret_management.encryption_keys: + - my_first_encryption_key + - my_second_encryption_key + - ... +``` + +```yaml +secret_management.encryption_keys: [my_first_encryption_key, my_second_encryption_key, ...] +``` + +> :information_source: To generate a strong encryption key, for example using the AES-256 cipher, you can use the +> OpenSSL utility or any other online/offline tool of your choice: +> +> ```console +> $ openssl enc -aes-256 -P +> +> enter aes-256-cbc encryption password: +> Verifying - enter aes-256-cbc encryption password: +> ... +> +> key= +> ``` + +### Start the server + +To include Enterprise Search in the stack, run Docker Compose from the root of the repository with an additional command +line argument referencing the `enterprise-search-compose.yml` file: + +```console +$ docker-compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml up +``` + +Allow a few minutes for the stack to start, then open your web browser at the address http://localhost:3002 to see the +Enterprise Search home page. + +Enterprise Search is configured on first boot with the following default credentials: + +* user: *enterprise_search* +* password: *changeme* + +## Security + +The Enterprise Search password is defined inside the Compose file via the `ENT_SEARCH_DEFAULT_PASSWORD` environment +variable. We highly recommend choosing a more secure password than the default one for security reasons. + +To do so, change the value `ENT_SEARCH_DEFAULT_PASSWORD` environment variable inside the Compose file **before the first +boot**: + +```yaml +enterprise-search: + + environment: + ENT_SEARCH_DEFAULT_PASSWORD: {{some strong password}} +``` + +> :warning: The default Enterprise Search password can only be set during the initial boot. Once the password is +> persisted in Elasticsearch, it can only be changed via the Elasticsearch API. + +For more information, please refer to [User Management and Security][enterprisesearch-security]. + +## Configuring Enterprise Search + +The Enterprise Search configuration is stored in [`config/enterprise-search.yml`][config-enterprisesearch]. You can +modify this file using the [Default Enterprise Search configuration][enterprisesearch-config] as a reference. + +You can also specify the options you want to override by setting environment variables inside the Compose file: + +```yaml +enterprise-search: + + environment: + ent_search.auth.source: standard + worker.threads: '6' +``` + +Any change to the Enterprise Search configuration requires a restart of the Enterprise Search container: + +```console +$ docker-compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml restart enterprise-search +``` + +Please refer to the following documentation page for more details about how to configure Enterprise Search inside a +Docker container: [Running Enterprise Search Using Docker][enterprisesearch-docker]. + +## See also + +[Enterprise Search documentation][enterprisesearch-docs] + + +[config-enterprisesearch]: config/enterprise-search.yml + +[enterprisesearch-encryption]: https://www.elastic.co/guide/en/enterprise-search/current/encryption-keys.html +[enterprisesearch-security]: https://www.elastic.co/guide/en/workplace-search/current/workplace-search-security.html +[enterprisesearch-config]: https://www.elastic.co/guide/en/enterprise-search/current/configuration.html +[enterprisesearch-docker]: https://www.elastic.co/guide/en/enterprise-search/current/docker.html +[enterprisesearch-docs]: https://www.elastic.co/guide/en/enterprise-search/current/index.html diff --git a/extensions/enterprise-search/config/enterprise-search.yml b/extensions/enterprise-search/config/enterprise-search.yml new file mode 100644 index 0000000..790435b --- /dev/null +++ b/extensions/enterprise-search/config/enterprise-search.yml @@ -0,0 +1,27 @@ +--- +## Enterprise Search core configuration +## https://www.elastic.co/guide/en/enterprise-search/current/configuration.html +# + +## --------------------- REQUIRED --------------------- + +# Encryption keys to protect application secrets. +secret_management.encryption_keys: + # add encryption keys below + #- add encryption keys here + +## ---------------------------------------------------- + +# IP address Enterprise Search listens on +ent_search.listen_host: 0.0.0.0 + +# URL at which users reach Enterprise Search +ent_search.external_url: http://localhost:3002 + +# Elasticsearch URL and credentials +elasticsearch.host: http://${ES_HOST}:${ES_PORT} +elasticsearch.username: ${ES_USER} +elasticsearch.password: ${ES_PASS} + +# Allow Enterprise Search to modify Elasticsearch settings. Used to enable auto-creation of Elasticsearch indexes. +allow_es_settings_modification: true diff --git a/extensions/enterprise-search/enterprise-search-compose.yml b/extensions/enterprise-search/enterprise-search-compose.yml new file mode 100644 index 0000000..3cecfba --- /dev/null +++ b/extensions/enterprise-search/enterprise-search-compose.yml @@ -0,0 +1,22 @@ +version: '3.2' + +services: + enterprise-search: + build: + context: extensions/enterprise-search/ + args: + ELK_VERSION: $ELK_VERSION + volumes: + - type: bind + source: ./extensions/enterprise-search/config/enterprise-search.yml + target: /usr/share/enterprise-search/config/enterprise-search.yml + read_only: true + environment: + JAVA_OPTS: -Xmx2g -Xms2g + ENT_SEARCH_DEFAULT_PASSWORD: ${ES_PASS} + ports: + - '3002:3002' + networks: + - elk + depends_on: + - elasticsearch diff --git a/extensions/logspout/Dockerfile b/extensions/logspout/Dockerfile new file mode 100644 index 0000000..9591df5 --- /dev/null +++ b/extensions/logspout/Dockerfile @@ -0,0 +1,5 @@ +# uses ONBUILD instructions described here: +# https://github.com/gliderlabs/logspout/tree/master/custom + +FROM gliderlabs/logspout:master +ENV SYSLOG_FORMAT rfc3164 diff --git a/extensions/logspout/README.md b/extensions/logspout/README.md new file mode 100644 index 0000000..a8b25f3 --- /dev/null +++ b/extensions/logspout/README.md @@ -0,0 +1,28 @@ +# Logspout extension + +Logspout collects all Docker logs using the Docker logs API, and forwards them to Logstash without any additional +configuration. + +## Usage + +If you want to include the Logspout extension, run Docker Compose from the root of the repository with an additional +command line argument referencing the `logspout-compose.yml` file: + +```bash +$ docker-compose -f docker-compose.yml -f extensions/logspout/logspout-compose.yml up +``` + +In your Logstash pipeline configuration, enable the `udp` input and set the input codec to `json`: + +``` +input { + udp { + port => 5000 + codec => json + } +} +``` + +## Documentation + +https://github.com/looplab/logspout-logstash diff --git a/extensions/logspout/build.sh b/extensions/logspout/build.sh new file mode 100755 index 0000000..eef0822 --- /dev/null +++ b/extensions/logspout/build.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +# unmodified from: +# https://github.com/gliderlabs/logspout/blob/67ee3831cbd0594361bb3381380c65bdbeb3c20f/custom/build.sh + +set -e +apk add --update go git mercurial build-base +mkdir -p /go/src/github.com/gliderlabs +cp -r /src /go/src/github.com/gliderlabs/logspout +cd /go/src/github.com/gliderlabs/logspout +export GOPATH=/go +go get +go build -ldflags "-X main.Version=$1" -o /bin/logspout +apk del go git mercurial build-base +rm -rf /go /var/cache/apk/* /root/.glide + +# backwards compatibility +ln -fs /tmp/docker.sock /var/run/docker.sock diff --git a/extensions/logspout/logspout-compose.yml b/extensions/logspout/logspout-compose.yml new file mode 100644 index 0000000..1c349f2 --- /dev/null +++ b/extensions/logspout/logspout-compose.yml @@ -0,0 +1,16 @@ +version: '3.2' + +services: + logspout: + build: + context: extensions/logspout + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + environment: + ROUTE_URIS: logstash://logstash:5000 + LOGSTASH_TAGS: docker-elk + networks: + - elk + depends_on: + - logstash + restart: on-failure diff --git a/extensions/logspout/modules.go b/extensions/logspout/modules.go new file mode 100644 index 0000000..a674bee --- /dev/null +++ b/extensions/logspout/modules.go @@ -0,0 +1,9 @@ +package main + +// installs the Logstash adapter for Logspout, and required dependencies +// https://github.com/looplab/logspout-logstash +import ( + _ "github.com/looplab/logspout-logstash" + _ "github.com/gliderlabs/logspout/transports/udp" + _ "github.com/gliderlabs/logspout/transports/tcp" +) diff --git a/kibana/Dockerfile b/kibana/Dockerfile new file mode 100644 index 0000000..2fb3659 --- /dev/null +++ b/kibana/Dockerfile @@ -0,0 +1,7 @@ +ARG ELK_VERSION + +# https://www.docker.elastic.co/ +FROM docker.elastic.co/kibana/kibana:${ELK_VERSION} + +# Add your kibana plugins setup here +# Example: RUN kibana-plugin install diff --git a/kibana/config/kibana.yml b/kibana/config/kibana.yml new file mode 100644 index 0000000..9db97ee --- /dev/null +++ b/kibana/config/kibana.yml @@ -0,0 +1,15 @@ +--- +## Default Kibana configuration from Kibana base image. +## https://github.com/elastic/kibana/blob/master/src/dev/build/tasks/os_packages/docker_generator/templates/kibana_yml.template.js +# +server.name: kibana +server.host: 0.0.0.0 +elasticsearch.hosts: [ "http://${ES_HOST}:${ES_PORT}" ] +monitoring.ui.container.elasticsearch.enabled: true + +## X-Pack security credentials +elasticsearch.username: ${ES_USER} +elasticsearch.password: ${ES_PASS} + +# see https://discuss.elastic.co/t/security-exception-current-license-is-non-compliant-for-security-with-license-expired-feature-security/97351 +xpack.security.enabled: false diff --git a/leaktopus_backend/.gitignore b/leaktopus_backend/.gitignore new file mode 100644 index 0000000..333365a --- /dev/null +++ b/leaktopus_backend/.gitignore @@ -0,0 +1 @@ +celerybeat-schedule diff --git a/leaktopus_backend/Dockerfile b/leaktopus_backend/Dockerfile new file mode 100644 index 0000000..3172864 --- /dev/null +++ b/leaktopus_backend/Dockerfile @@ -0,0 +1,55 @@ +FROM golang:alpine AS builder + +RUN apk update && apk add --no-cache git +ENV GOBIN /go/bin + +#RUN export CGO_ENABLED=0 && go get github.com/eth0izzle/shhgit +RUN export CGO_ENABLED=0 && go install github.com/eth0izzle/shhgit@latest + +FROM python:3.9.5-slim-buster as app +LABEL maintainer="Rotem Reiss " + +WORKDIR /app + +RUN apt-get update \ + && apt-get install -y build-essential git --no-install-recommends \ + && rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man \ + && apt-get clean \ + && useradd --create-home python \ + && mkdir -p /home/python/.cache/pip && chown python:python -R /home/python /app + +USER python + +COPY --chown=python:python requirements*.txt ./ +COPY --chown=python:python bin/ ./bin +# Directory for the SQLite DB. +COPY --chown=python:python db/ /db +# Directory for the temp data (e.g. clones). +COPY --chown=python:python data/ /data + +RUN chmod 0755 bin/* && bin/pip3-install + +ARG FLASK_ENV="production" +ENV FLASK_ENV="${FLASK_ENV}" \ + FLASK_APP="leaktopus.app" \ + FLASK_SKIP_DOTENV="true" \ + PYTHONUNBUFFERED="true" \ + PYTHONPATH="." \ + PATH="${PATH}:/home/python/.local/bin" \ + USER="python" \ + DB_PATH="/db/leaktopus.sqlite" + + +COPY --chown=python:python . . + +#RUN if [ "${FLASK_ENV}" != "development" ]; then \ +# ln -s /public /app/public && flask digest compile && rm -rf /app/public; fi + +# Add +COPY --from=builder --chown=python:python /go/bin/shhgit /usr/local/bin + +ENTRYPOINT ["/app/bin/docker-entrypoint-web"] + +EXPOSE 8000 + +CMD ["gunicorn", "-c", "python:config.gunicorn", "leaktopus.app:create_app()"] \ No newline at end of file diff --git a/leaktopus_backend/__init__.py b/leaktopus_backend/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/bin/docker-entrypoint-web b/leaktopus_backend/bin/docker-entrypoint-web new file mode 100755 index 0000000..9c2d6fc --- /dev/null +++ b/leaktopus_backend/bin/docker-entrypoint-web @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +# This will clean up old md5 digested files since they are volume persisted. +# If you want to persist older versions of any of these files to avoid breaking +# external links outside of your domain then feel free remove this line. +#rm -rf public/css public/js public/fonts public/images + +# Always keep this here as it ensures the built and digested assets get copied +# into the correct location. This avoids them getting clobbered by any volumes. +#cp -a /public /app + +exec "$@" diff --git a/leaktopus_backend/bin/pip3-install b/leaktopus_backend/bin/pip3-install new file mode 100755 index 0000000..1b8f06b --- /dev/null +++ b/leaktopus_backend/bin/pip3-install @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e + +pip3 install --no-warn-script-location --user -r requirements.txt + +# If requirements.txt is newer than the lock file or the lock file doesn't exist. +if [ requirements.txt -nt requirements-lock.txt ]; then + pip3 freeze --user > requirements-lock.txt +fi + +pip3 install --no-warn-script-location --user \ + -r requirements.txt -c requirements-lock.txt diff --git a/leaktopus_backend/config/__init__.py b/leaktopus_backend/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/config/gunicorn.py b/leaktopus_backend/config/gunicorn.py new file mode 100644 index 0000000..87c1087 --- /dev/null +++ b/leaktopus_backend/config/gunicorn.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +import multiprocessing +import os + +from distutils.util import strtobool + + +bind = os.getenv('WEB_BIND', '0.0.0.0:8000') +accesslog = '-' +access_log_format = "%(h)s %(l)s %(u)s %(t)s '%(r)s' %(s)s %(b)s '%(f)s' '%(a)s' in %(D)sµs" # noqa: E501 + +workers = int(os.getenv('WEB_CONCURRENCY', multiprocessing.cpu_count() * 2)) +threads = int(os.getenv('PYTHON_MAX_THREADS', 2)) + +reload = bool(strtobool(os.getenv('WEB_RELOAD', 'false'))) +timeout = int(os.getenv('GUNICORN_TIMEOUT', 120)) diff --git a/leaktopus_backend/config/settings.py b/leaktopus_backend/config/settings.py new file mode 100644 index 0000000..f187b35 --- /dev/null +++ b/leaktopus_backend/config/settings.py @@ -0,0 +1,39 @@ +import os +from distutils.util import strtobool + +SECRET_KEY = os.getenv('SECRET_KEY', None) + +SERVER_NAME = os.getenv('SERVER_NAME', + 'localhost:{0}'.format(os.getenv('DOCKER_WEB_PORT', + '8000'))) +HTTPS_ENABLED = os.getenv('HTTPS_ENABLED', 0) + +# Flask-Mail. +# MAIL_SERVER = os.getenv('MAIL_SERVER', 'smtp.gmail.com') +# MAIL_PORT = os.getenv('MAIL_PORT', 587) +# MAIL_USE_TLS = bool(strtobool(os.getenv('MAIL_USE_TLS', 'true'))) +# MAIL_USE_SSL = bool(strtobool(os.getenv('MAIL_USE_SSL', 'false'))) +# MAIL_USERNAME = os.getenv('MAIL_USERNAME', None) +# MAIL_PASSWORD = os.getenv('MAIL_PASSWORD', None) +# MAIL_DEFAULT_SENDER = os.getenv('MAIL_DEFAULT_SENDER', 'contact@local.host') + +# Redis. +REDIS_URL = os.getenv('REDIS_URL', 'redis://redis:6379/0') + +# Celery. +CELERY_CONFIG = { + 'broker_url': REDIS_URL, + 'result_backend': REDIS_URL, + 'include': [ + 'leaktopus.common.scanner_async', + 'leaktopus.common.github_indexer', + 'leaktopus.common.leak_enhancer', + 'leaktopus.common.teams_alerter', + 'leaktopus.common.cron' + ], + 'task_serializer': 'pickle', + 'result_serializer': 'pickle', + 'accept_content': ['pickle'], + 'result_accept_content': ['pickle'], + 'task_max_retries': None, +} diff --git a/leaktopus_backend/data/.keep b/leaktopus_backend/data/.keep new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/db/.keep b/leaktopus_backend/db/.keep new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/.gitignore b/leaktopus_backend/leaktopus/.gitignore new file mode 100644 index 0000000..ee05595 --- /dev/null +++ b/leaktopus_backend/leaktopus/.gitignore @@ -0,0 +1,2 @@ +.idea +__pycache__ diff --git a/leaktopus_backend/leaktopus/__init__.py b/leaktopus_backend/leaktopus/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/app.py b/leaktopus_backend/leaktopus/app.py new file mode 100644 index 0000000..7c45145 --- /dev/null +++ b/leaktopus_backend/leaktopus/app.py @@ -0,0 +1,91 @@ +from flask import Flask, g, redirect, url_for, abort +from flask_cors import CORS +from werkzeug.debug import DebuggedApplication +from celery import Celery +from leaktopus.routes.github.github_api import github_api +from leaktopus.routes.system.system_api import system_api +from leaktopus.routes.alerts.alerts_api import alerts_api +from leaktopus.routes.leaks.leaks_api import leaks_api +from leaktopus.routes.scans.scans_api import scans_api +import os +# from leaktopus.extensions import cache, debug_toolbar +from flasgger import Swagger + + +def create_celery_app(app=None): + """ + Create a new Celery object and tie together the Celery config to the app's + config. Wrap all tasks in the context of the application. + + :param app: Flask app + :return: Celery app + """ + app = app or create_app() + + celery = Celery(app.import_name) + celery.conf.update(app.config.get('CELERY_CONFIG', {})) + celery.conf.beat_schedule = { + 'run-all-crons-every-minute': { + 'task': 'leaktopus.common.cron.cron_jobs', + 'schedule': int(os.environ.get('CRON_INTERVAL', '60')), + } + } + + TaskBase = celery.Task + + class ContextTask(TaskBase): + abstract = True + + def __call__(self, *args, **kwargs): + with app.app_context(): + return TaskBase.__call__(self, *args, **kwargs) + + celery.Task = ContextTask + return celery + + +def create_app(settings_override=None): + """ + Create a Flask application using the app factory pattern. + :param settings_override: Override settings + :return: Flask app + """ + app = Flask(__name__) + # cache.init_app(app, config={'CACHE_TYPE': 'simple'}) + + app.config.from_object('config.settings') + if settings_override: + app.config.update(settings_override) + + # Register all our APIs. + app.register_blueprint(system_api) + app.register_blueprint(scans_api) + app.register_blueprint(leaks_api) + app.register_blueprint(github_api) + app.register_blueprint(alerts_api) + + extensions(app) + + if app.debug: + app.wsgi_app = DebuggedApplication(app.wsgi_app, evalex=True) + + return app + + +def extensions(app): + """ + Register 0 or more extensions (mutates the app passed in). + :param app: Flask application instance + :return: None + """ + CORS(app) + swagger = Swagger(app) + # debug_toolbar.init_app(app) + # mail.init_app(app) + # csrf.init_app(app) + # flask_static_digest.init_app(app) + + return None + + +celery_app = create_celery_app() diff --git a/leaktopus_backend/leaktopus/common/__init__.py b/leaktopus_backend/leaktopus/common/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/common/contributors.py b/leaktopus_backend/leaktopus/common/contributors.py new file mode 100644 index 0000000..97a6c51 --- /dev/null +++ b/leaktopus_backend/leaktopus/common/contributors.py @@ -0,0 +1,45 @@ +import leaktopus.common.db_handler as dbh + + +def db_install_contributors(db): + cursor = db.cursor() + cursor.execute(''' + CREATE TABLE contributors( + id INTEGER PRIMARY KEY AUTOINCREMENT, + leak_id INTEGER, + name TEXT, + author_email TEXT, + committer_email TEXT, + is_organization_domain INTEGER, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + )''') + db.commit() + + +def get_contributors(**kwargs): + sql_cond = [] + sql_vars = () + for col in kwargs.keys(): + sql_vars = (*sql_vars, kwargs[col]) + sql_cond.append(col) + + cur = dbh.get_db().cursor() + if sql_vars: + where_str = ("=? AND ").join(sql_cond) + "=?" + res = cur.execute("SELECT * FROM contributors WHERE " + where_str + " ORDER BY created_at DESC", sql_vars) + else: + res = cur.execute('''SELECT * FROM contributors ORDER BY created_at DESC''') + return res.fetchall() + + +def add_contributor(leak_id, name, author_email, committer_email, is_organization_domain): + # Insert or ignore if already exists + db = dbh.get_db() + + cursor = db.cursor() + cursor.execute(''' + INSERT OR IGNORE INTO contributors(leak_id, name, author_email, committer_email, is_organization_domain) + VALUES(?,?,?,?,?) + ''', (leak_id, name, author_email, committer_email, is_organization_domain,)) + db.commit() + return cursor.lastrowid diff --git a/leaktopus_backend/leaktopus/common/contributors_extractor.py b/leaktopus_backend/leaktopus/common/contributors_extractor.py new file mode 100644 index 0000000..08fcd02 --- /dev/null +++ b/leaktopus_backend/leaktopus/common/contributors_extractor.py @@ -0,0 +1,105 @@ +import os +from subprocess import Popen, CalledProcessError, STDOUT, PIPE +import hashlib +from leaktopus.common.contributors import add_contributor, get_contributors +from leaktopus.common.leak_handler import get_leak_by_url + + +def is_contributor_org_domain(author_email, committer_email, organization_domains): + contributors_domains = set() + author_email_sep = author_email.split('@') + committer_email_sep = committer_email.split('@') + if len(author_email_sep) > 1: + contributors_domains.add(author_email_sep[1]) + + if len(committer_email_sep) > 1: + contributors_domains.add(committer_email_sep[1]) + + for domain in contributors_domains: + if domain in organization_domains: + return True + + return False + + +def add_contributor_to_db(leak, contributor): + return add_contributor( + leak["pid"], + contributor['name'], + contributor['author_email'], + contributor['committer_email'], + contributor['is_organization_domain'] + ) + + +def get_contributor_checksum(contributor): + contributor_str = contributor['name'] +\ + contributor['author_email'] +\ + contributor['committer_email'] + return hashlib.md5(contributor_str.encode('utf-8')).hexdigest() + + +def get_existing_contributors_checksums(leak): + existing_contributors_checksums = [] + existing_contributors = get_contributors(leak_id=leak['pid']) + + for contributor in existing_contributors: + existing_contributors_checksums.append(get_contributor_checksum(contributor)) + + return existing_contributors_checksums + + +def parse_contributors_results(url, output, organization_domains): + contributors = [] + + for row in output.splitlines(): + row_parts = row.split("###") + name = row_parts[0] + committer_email = row_parts[1] + author_email = row_parts[2] + + contributors.append({ + "name": name, + "author_email": author_email, + "committer_email": committer_email, + "is_organization_domain": is_contributor_org_domain(author_email, committer_email, organization_domains) + }) + + uniq_contributors = [dict(s) for s in set(frozenset(d.items()) for d in contributors)] + # Get leak id from DB. + leak = get_leak_by_url(url) + + # Exit in case that the leak wasn't found. + # @todo Replace with exception. + if not leak: + return False + + # Calc existing contributors checksums to decide whether new should be inserted to DB. + existing_contributors_checksums = get_existing_contributors_checksums(leak) + + for contributor in uniq_contributors: + contributor_checksum = get_contributor_checksum(contributor) + + # Add the contributor to the DB if not already exists. + if contributor_checksum not in existing_contributors_checksums: + add_contributor_to_db(leak, contributor) + + +def scan(url, full_diff_dir, organization_domains): + try: + # Using ### as a separator between the values. + git_log_proc = Popen([ + 'git', + 'log', + '--pretty=format:%an###%ce###%aE' + ], stdout=PIPE, cwd=full_diff_dir) + # Sort and leave only unique lines for faster processing. + proc2 = Popen(['sort', '-u'], stdin=git_log_proc.stdout, stdout=PIPE, stderr=PIPE) + git_log_proc.stdout.close() # Allow proc1 to receive a SIGPIPE if proc2 exits. + output, err = proc2.communicate() + str_output = output.decode() + + if str_output: + parse_contributors_results(url, str_output, organization_domains) + except CalledProcessError: + return False diff --git a/leaktopus_backend/leaktopus/common/cron.py b/leaktopus_backend/leaktopus/common/cron.py new file mode 100644 index 0000000..1e87853 --- /dev/null +++ b/leaktopus_backend/leaktopus/common/cron.py @@ -0,0 +1,10 @@ +import leaktopus.common.teams_alerter as teams +from leaktopus.app import create_celery_app + +celery = create_celery_app() + + +@celery.task() +def cron_jobs(): + teams.alert.s().apply_async() + return [] diff --git a/leaktopus_backend/leaktopus/common/db_handler.py b/leaktopus_backend/leaktopus/common/db_handler.py new file mode 100644 index 0000000..608cfab --- /dev/null +++ b/leaktopus_backend/leaktopus/common/db_handler.py @@ -0,0 +1,330 @@ +import sqlite3 +from flask import Flask, g, abort +import os +import re +import leaktopus.common.scans as scans +import leaktopus.common.contributors as contributors +import leaktopus.common.sensitive_keywords as sensitive_keywords +import leaktopus.common.updates as updates +import leaktopus.common.db_updates as db_updates + +app = Flask(__name__) + + +def dict_factory(cursor, row): + d = {} + for idx, col in enumerate(cursor.description): + d[col[0]] = row[idx] + return d + + +def regexp(expr, item): + return re.search(rf"{expr}", item) is not None + + +def init_config_github_ignore(db): + cursor = db.cursor() + # Install the default ignore list. + cursor.execute('''INSERT INTO config_github_ignore(pattern) VALUES + ("^https://github.com/citp/privacy-policy-historical"), + ("^https://github.com/haonanc/GDPR-data-collection"), + ("^https://github.com/[\w\-]+/dmca") + ''') + db.commit() + + +def db_install(db): + """ + First time DB initialization. + :param db: + :return: + """ + cursor = db.cursor() + cursor.execute(''' + CREATE TABLE leak( + pid INTEGER PRIMARY KEY AUTOINCREMENT, + url TEXT, + search_query TEXT, + leak_type TEXT, + context TEXT, + leaks TEXT, + acknowledged TINYINT, + last_modified INTEGER, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + )''') + + cursor.execute(''' + CREATE TABLE secret( + pid INTEGER PRIMARY KEY AUTOINCREMENT, + leak_id INTEGER, + url TEXT, + signature_name TEXT, + match_string TEXT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + )''') + + cursor.execute(''' + CREATE TABLE domain( + pid INTEGER PRIMARY KEY AUTOINCREMENT, + leak_id INTEGER, + url TEXT, + domain TEXT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + )''') + + cursor.execute(''' + CREATE TABLE config_github_ignore(pid INTEGER PRIMARY KEY AUTOINCREMENT, pattern TEXT UNIQUE) + ''') + + cursor.execute(''' + CREATE TABLE alert( + alert_id INTEGER PRIMARY KEY AUTOINCREMENT, + sent_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + leak_id INTEGER, + type TEXT + )''') + db.commit() + + # Make some further installation steps. + init_config_github_ignore(db) + updates.db_install_updates(db) + scans.db_install_scans(db) + contributors.db_install_contributors(db) + sensitive_keywords.db_install_sensitive_keywords(db) + + # Update the DB with the latest updates version. + db_updates.apply_db_updates(True) + + +def get_db(): + db_path = os.environ.get('DB_PATH', "/tmp/leaktopus.sqlite") + + db = getattr(g, '_database', None) + is_db_exists = os.path.isfile(db_path) + + if db is None: + db = g._database = sqlite3.connect(db_path) + db.create_function("REGEXP", 2, regexp) + db.row_factory = dict_factory + + if not is_db_exists: + db_install(db) + + return db + + +def get_alert(**kwargs): + try: + sql_cond = [] + sql_vars = () + for col in kwargs.keys(): + sql_vars = (*sql_vars, kwargs[col]) + sql_cond.append(col) + + cur = get_db().cursor() + if sql_vars: + where_str = ("=? AND ").join(sql_cond) + "=?" + res = cur.execute("SELECT * FROM alert WHERE " + where_str, sql_vars) + else: + res = cur.execute('''SELECT * FROM alert''') + return res.fetchall() + + except Exception as e: + abort(500) + + +def add_alert(leak_id, type): + try: + # Insert or ignore if already exists + db = get_db() + + cursor = db.cursor() + cursor.execute(''' + INSERT OR IGNORE INTO alert(leak_id, "type") + VALUES(?,?) + ''', (leak_id, type,)) + db.commit() + return cursor.lastrowid + + except Exception as e: + abort(500) + + +def get_leak(**kwargs): + try: + sql_cond = [] + sql_vars = () + for col in kwargs.keys(): + sql_vars = (*sql_vars, kwargs[col]) + sql_cond.append(col) + + cur = get_db().cursor() + if sql_vars: + where_str = ("=? AND ").join(sql_cond) + "=?" + # @todo Replace this dirty workaround in a way that supports operators. + where_str = where_str.replace("created_at=?", "created_at>?") + res = cur.execute("SELECT * FROM leak WHERE " + where_str + " ORDER BY created_at DESC", sql_vars) + else: + res = cur.execute("SELECT * FROM leak ORDER BY created_at DESC") + + leaks_res = res.fetchall() + # @todo Replace the secrets fetching with one query with join and grouping. + for i in range(len(leaks_res)): + secrets_res = cur.execute("SELECT * FROM secret WHERE leak_id=? ORDER BY created_at DESC", (leaks_res[i]["pid"],)) + leaks_res[i]["secrets"] = secrets_res.fetchall() + + domains_res = cur.execute("SELECT * FROM domain WHERE leak_id=? ORDER BY created_at DESC", (leaks_res[i]["pid"],)) + leaks_res[i]["domains"] = domains_res.fetchall() + + domains_res = cur.execute("SELECT id, name, author_email, committer_email, is_organization_domain FROM contributors WHERE leak_id=? ORDER BY created_at DESC", (leaks_res[i]["pid"],)) + leaks_res[i]["contributors"] = domains_res.fetchall() + + domains_res = cur.execute("SELECT id, keyword, url FROM sensitive_keywords WHERE leak_id=? ORDER BY created_at DESC", (leaks_res[i]["pid"],)) + leaks_res[i]["sensitive_keywords"] = domains_res.fetchall() + + return leaks_res + + except Exception as e: + print(e) + abort(500) + + +def get_secret(**kwargs): + try: + sql_cond = [] + sql_vars = () + for col in kwargs.keys(): + sql_vars = (*sql_vars, kwargs[col]) + sql_cond.append(col) + + cur = get_db().cursor() + if sql_vars: + where_str = ("=? AND ").join(sql_cond) + "=?" + res = cur.execute("SELECT * FROM secret WHERE " + where_str + " ORDER BY created_at DESC", sql_vars) + else: + res = cur.execute('''SELECT * FROM secret ORDER BY created_at DESC''') + return res.fetchall() + + except Exception as e: + abort(500) + + +def add_secret(leak_id, url, signature_name, match_string): + try: + # Insert or ignore if already exists + db = get_db() + + cursor = db.cursor() + cursor.execute(''' + INSERT OR IGNORE INTO secret(leak_id, url, signature_name, match_string) + VALUES(?,?,?,?) + ''', (leak_id, url, signature_name, match_string,)) + db.commit() + return cursor.lastrowid + + except Exception as e: + abort(500) + + +def get_domain(**kwargs): + sql_cond = [] + sql_vars = () + for col in kwargs.keys(): + sql_vars = (*sql_vars, kwargs[col]) + sql_cond.append(col) + + cur = get_db().cursor() + if sql_vars: + where_str = ("=? AND ").join(sql_cond) + "=?" + res = cur.execute("SELECT * FROM domain WHERE " + where_str + " ORDER BY created_at DESC", sql_vars) + else: + res = cur.execute('''SELECT * FROM domain ORDER BY created_at DESC''') + return res.fetchall() + + +def add_domain(leak_id, url, domain): + # Insert or ignore if already exists + db = get_db() + + cursor = db.cursor() + cursor.execute(''' + INSERT OR IGNORE INTO domain(leak_id, url, domain) + VALUES(?,?,?) + ''', (leak_id, url, domain,)) + db.commit() + return cursor.lastrowid + + +# @todo Consider to use **kwargs instead. +def add_leak(url, search_query, leak_type, context, leaks, acknowledged, last_modified): + try: + # Insert or ignore if already exists + db = get_db() + + cursor = db.cursor() + cursor.execute(''' + INSERT OR IGNORE INTO leak(url, search_query, leak_type, context, leaks, acknowledged, last_modified) + VALUES(?,?,?,?,?,?,?) + ''', (url,search_query,leak_type,context,leaks,acknowledged,last_modified,)) + db.commit() + return cursor.lastrowid + + except Exception as e: + abort(500) + + +def update_leak(leak_id, **kwargs): + # Insert or ignore if already exists + db = get_db() + + # @todo Find a prettier way to do the dynamic update. + for col in kwargs.keys(): + col_sql = col + "=?" + db.cursor().execute("UPDATE leak SET " + col_sql + " WHERE pid=?", (kwargs[col],leak_id,)) + db.commit() + + +def delete_leak_by_url(url): + db = get_db() + cur = db.cursor() + + cur.execute('''DELETE FROM leak WHERE url REGEXP ?''', (url,)) + cur.execute('''DELETE FROM secret WHERE url REGEXP ?''', (url,)) + cur.execute('''DELETE FROM domain WHERE url REGEXP ?''', (url,)) + + db.commit() + + +def get_config_github_ignored(): + cur = get_db().cursor() + res = cur.execute('''SELECT pid as id, pattern FROM config_github_ignore''') + return res.fetchall() + + +def add_config_github_ignored(pattern): + try: + # Insert or ignore if already exists + db = get_db() + cursor = db.cursor() + cursor.execute('''INSERT OR IGNORE INTO config_github_ignore(pattern) VALUES(?)''', (pattern,)) + db.commit() + return cursor.lastrowid + except Exception as e: + abort(500) + + +def delete_config_github_ignored(pid): + try: + # Insert or ignore if already exists + db = get_db() + db.cursor().execute('''DELETE FROM config_github_ignore WHERE pid=?''', (pid,)) + db.commit() + except Exception as e: + abort(500) + + +@app.teardown_appcontext +def close_connection(exception): + db = getattr(g, '_database', None) + if db is not None: + db.close() diff --git a/leaktopus_backend/leaktopus/common/db_updates.py b/leaktopus_backend/leaktopus/common/db_updates.py new file mode 100644 index 0000000..5d5613f --- /dev/null +++ b/leaktopus_backend/leaktopus/common/db_updates.py @@ -0,0 +1,60 @@ +from sqlite3 import OperationalError +import leaktopus.common.db_handler as dbh +import leaktopus.common.updates as updates + +DB_UPDATES_PREFIX = "db_update_" + + +def apply_db_updates(is_clean_install): + """ + + :param is_clean_install: Whether this is a clean initial installation (otherwise an update). + :return: + """ + # Get all done DB updates (to skip). + done_updates = [] + + # Get the db. + db = dbh.get_db() + + try: + done_updates = updates.get_updates(status=1) + except OperationalError as e: + if str(e).startswith("no such table:"): + print("Updates table not yet exists") + pass + + # Get the update ids of done updates. + done_update_ids = [update['update_id'] for update in done_updates] + + for key, value in globals().items(): + if callable(value) and key.startswith(DB_UPDATES_PREFIX): + update_id = key[len(DB_UPDATES_PREFIX):] + if update_id not in done_update_ids: + if not is_clean_install: + # Execute the update + value(db) + + # Update as done in DB. + updates.add_update(update_id) + print(f'Update {update_id} completed.') + + +# Add below update function with a unique number, those will be executed automatically on next update request. +def db_update_1001(db): + updates.db_install_updates(db) + + +def db_update_1002(db): + import leaktopus.common.scans as scans + scans.db_install_scans(db) + + +def db_update_1003(db): + import leaktopus.common.contributors as contributors + contributors.db_install_contributors(db) + + +def db_update_1004(db): + import leaktopus.common.sensitive_keywords as sensitive_keywords + sensitive_keywords.db_install_sensitive_keywords(db) diff --git a/leaktopus_backend/leaktopus/common/domains_scanner.py b/leaktopus_backend/leaktopus/common/domains_scanner.py new file mode 100644 index 0000000..0380342 --- /dev/null +++ b/leaktopus_backend/leaktopus/common/domains_scanner.py @@ -0,0 +1,49 @@ +import os +from subprocess import check_output, CalledProcessError, STDOUT +import json +from leaktopus.common.db_handler import add_domain, get_domain +from leaktopus.common.leak_handler import get_leak_by_url + + +def parse_domains_results(url, output): + domains = [] + + for row in output.splitlines(): + row_parts = row.split(":") + commit_sha = row_parts[0][2:] + domains.append({ + "commit_sha": commit_sha, + "domain": ':'.join(row_parts[1:]), + "html_url": url[:-4] + "/commit/" + commit_sha + }) + + # Filter by unique domains. + domains_unique = list({v['domain']: v for v in domains}.values()) + + # Get leak id from DB. + leak = get_leak_by_url(url) + + if not leak: + return False + + for domain in domains_unique: + # Add the secret to the DB if not already exists + if not get_domain(domain=domain["domain"]): + add_domain(leak["pid"], domain["html_url"], domain["domain"]) + + +def scan(url, full_diff_dir, organization_domains): + # @todo Consider to match also IP addresses. + domains_matching = "([a-zA-Z])+?://([a-zA-Z0-9\.\-_])*(" + "|".join(organization_domains) + ")" + try: + output = check_output([ + 'egrep', + '-Iiro', + domains_matching, + "." + ], stderr=STDOUT, cwd=full_diff_dir).decode() + + if output: + parse_domains_results(url, output) + except CalledProcessError: + return False diff --git a/leaktopus_backend/leaktopus/common/elasticsearch_handler.py b/leaktopus_backend/leaktopus/common/elasticsearch_handler.py new file mode 100644 index 0000000..40b6088 --- /dev/null +++ b/leaktopus_backend/leaktopus/common/elasticsearch_handler.py @@ -0,0 +1,18 @@ +import os +from elasticsearch import Elasticsearch + + +def init_es(): + ES_HOST = os.environ.get('ES_HOST', 'localhost') + ES_PORT = os.environ.get('ES_PORT', '9200') + ES_USER = os.environ.get('ES_USER', 'elastic') + ES_PASS = os.environ.get('ES_PASS', 'changeme') + + return Elasticsearch( + [{'host': ES_HOST, 'port': ES_PORT}], + http_auth=(ES_USER, ES_PASS), + http_compress=True + ) + + +es = init_es() diff --git a/leaktopus_backend/leaktopus/common/github_indexer.py b/leaktopus_backend/leaktopus/common/github_indexer.py new file mode 100644 index 0000000..96d393d --- /dev/null +++ b/leaktopus_backend/leaktopus/common/github_indexer.py @@ -0,0 +1,105 @@ +import os +import time +from datetime import datetime +from github import Github, RateLimitExceededException +from leaktopus.app import create_celery_app +from leaktopus.common.elasticsearch_handler import es + +celery = create_celery_app() + + +# The Threshold should be higher from the number of worker threads. +GITHUB_RATE_LIMIT_THRESHOLD = 20 +ES_INDEX_NAME = "leaktopus-gh-commits" + + +def publish_commits_to_github(commits): + es.indices.create(index=ES_INDEX_NAME, ignore=400) + for commit in commits: + commit["timestamp"]: datetime.now() + res = es.index(index=ES_INDEX_NAME, id=commit["sha"], body=commit) + + +def is_exceeding_gh_rate_limit(g): + # Get commit without hitting GitHub's rate-limits. + if g.rate_limiting[0] < GITHUB_RATE_LIMIT_THRESHOLD: + rl_resettime = datetime.fromtimestamp(g.rate_limiting_resettime) + seconds_till_rl_reset = (rl_resettime - datetime.now()).total_seconds() + + return seconds_till_rl_reset + + return False + + +def is_commit_indexed(sha): + return es.exists(index=ES_INDEX_NAME, id=sha) + + +@celery.task +def github_index_commits(repos_full_names, scan_id): + import leaktopus.common.scans as scans + from leaktopus.models.scan_status import ScanStatus + + # Skip step if abort was requested. + if scans.is_scan_aborting(scan_id): + return repos_full_names + + # Exit if repos_full_names is empty(failure in previous steps). + if not repos_full_names: + return [] + + # Check whether commits index is enabled and functional, otherwise skip this method. + is_es_enabled = os.getenv("ES_INDEXING_ENABLED", 'True').lower() in ['true', '1'] + if not is_es_enabled or not es.ping(): + return repos_full_names + + # Update the status, since aborting wasn't requested. + scans.update_scan_status(scan_id, ScanStatus.SCAN_INDEXING) + + github_access_token = os.environ.get('GITHUB_ACCESS_TOKEN') + + for repo_full_name in repos_full_names: + commits_struct = [] + + try: + g = Github(github_access_token) + rl_reset = is_exceeding_gh_rate_limit(g) + + repo = g.get_repo(repo_full_name) + commits = repo.get_commits() + for commit in commits: + sha = commit.sha + if is_commit_indexed(sha): + # Skip commits that are already indexed. + continue + + # If approaching GitHub's rate-limit, create a new task that will start after reset + if rl_reset: + github_index_commits.apply_async(args=[repo_full_name], countdown=rl_reset) + continue + + commit_ext = repo.get_commit(sha) + + struct = { + "repo_full_name": repo_full_name, + "commit_author": commit_ext.commit.author.name, + "html_url": commit_ext.html_url, + "sha": sha, + "last_modified": commit_ext.last_modified + } + + for i in range(len(commit_ext.files)): + file = commit_ext.files[i] + if file.patch: + struct["patch-" + str(i)] = file.patch + + commits_struct.append(struct) + + except RateLimitExceededException: + # In case we still hit the limit - add this task again. + github_index_commits.apply_async(args=[repo_full_name], countdown=rl_reset) + # print('GitHub rate limit exceeded.') + + publish_commits_to_github(commits_struct) + + return repos_full_names diff --git a/leaktopus_backend/leaktopus/common/leak_enhancer.py b/leaktopus_backend/leaktopus/common/leak_enhancer.py new file mode 100644 index 0000000..a171fde --- /dev/null +++ b/leaktopus_backend/leaktopus/common/leak_enhancer.py @@ -0,0 +1,62 @@ +import os +import datetime +import shutil +from git.repo.base import Repo +import subprocess + +from leaktopus.app import create_celery_app + +celery = create_celery_app() + + +@celery.task +def leak_enhancer(repos_full_names, scan_id, organization_domains=[], sensitive_keywords=[]): + from leaktopus.common.secrets_scanner import scan as secrets_scan + from leaktopus.common.domains_scanner import scan as domains_scan + from leaktopus.common.contributors_extractor import scan as contributors_extractor + from leaktopus.common.sensitive_keywords_extractor import scan as sensitive_keywords_extractor + + # Skip step if abort was requested. + import leaktopus.common.scans as scans + from leaktopus.models.scan_status import ScanStatus + if scans.is_scan_aborting(scan_id): + return repos_full_names + + # Exit if repos_full_names is empty(failure in previous steps). + if not repos_full_names: + return [] + + # Update the status, since aborting wasn't requested. + scans.update_scan_status(scan_id, ScanStatus.SCAN_ANALYZING) + + clones_base_dir = os.environ.get('CLONES_DIR', '/tmp/leaktopus-clones/') + ts = datetime.datetime.now().timestamp() + + for repo_name in repos_full_names: + if scans.is_scan_aborting(scan_id): + continue + + repo_path = "https://github.com/" + repo_name + ".git" + clone_dir = os.path.join(clones_base_dir, str(ts), repo_name.replace("/", "_")) + + # Now, clone the repo. + Repo.clone_from(repo_path, clone_dir) + + # Prepare the full Git diff for secrets scan. + subprocess.call(['sh', '/app/secrets/git-extract-diff'], cwd=clone_dir) + # Run the secrets scanning tool (shhgit) + full_diff_dir = os.path.join(clone_dir, 'commits_data') + + domains_scan(repo_path, full_diff_dir, organization_domains) + sensitive_keywords_extractor(repo_path, full_diff_dir, sensitive_keywords) + contributors_extractor(repo_path, full_diff_dir, organization_domains) + secrets_scan(repo_path, full_diff_dir) + + # Cleanup of repo clone. + # @todo Cleanup even in case of an error. + shutil.rmtree(clone_dir, ignore_errors=True) + + # Cleanup of entire analysis directory. + shutil.rmtree(os.path.join(clones_base_dir, str(ts)), ignore_errors=True) + + return repos_full_names diff --git a/leaktopus_backend/leaktopus/common/leak_handler.py b/leaktopus_backend/leaktopus/common/leak_handler.py new file mode 100644 index 0000000..09b63cc --- /dev/null +++ b/leaktopus_backend/leaktopus/common/leak_handler.py @@ -0,0 +1,53 @@ +from flask import abort +import json +from leaktopus.common.db_handler import get_leak + + +def get_leak_by_url(url): + known_leaks = get_leak(url=url) + + if not known_leaks: + # New leak. + return False + + # Get the latest leak (sorted by created_at). + return known_leaks[0] + + +def get_leak_by_id(id): + leaks = fetch_leaks_from_db({"pid": id}) + if not leaks: + return [] + + return leaks + + +def leaks_result(leaks): + return { + "success": True, + "count": len(leaks), + "data": leaks + } + + +def fetch_leaks_from_db(filters): + leaks_results = [] + + for leak in get_leak(**filters): + leaks_results.append({ + "leak_id": leak["pid"], + "url": leak["url"], + "last_modified": leak["last_modified"], + "search_query": leak["search_query"], + "type": leak["leak_type"], + "created_at": leak["created_at"], + "context": json.loads(leak["context"]) if leak["context"] else [], + "secrets": leak["secrets"], + "domains": leak["domains"], + "contributors": leak["contributors"], + "sensitive_keywords": leak["sensitive_keywords"], + "IOL": json.loads(leak["leaks"]) if leak["leaks"] else [] + }) + + return leaks_result(leaks_results) + diff --git a/leaktopus_backend/leaktopus/common/scanner_async.py b/leaktopus_backend/leaktopus/common/scanner_async.py new file mode 100644 index 0000000..549a28b --- /dev/null +++ b/leaktopus_backend/leaktopus/common/scanner_async.py @@ -0,0 +1,453 @@ +from flask import abort +import os +from github import Github, RateLimitExceededException, BadCredentialsException, GithubException +from datetime import datetime +import re +import json +import leaktopus.common.db_handler as dbh +from leaktopus.app import create_celery_app +from leaktopus.common.leak_handler import leaks_result + +celery = create_celery_app() + +# Filters definitions +# @todo Migrate to a configuration table. +MIN_FORKS_FILTER = 2 +MAX_STARS_FILTER = 2 +MIN_NON_ORG_EMAIL = 5 +MIN_DOMAINS_NUMBER = 150 + + +def github_datetime_to_timestamp(github_datetime): + last_modified_datetime = datetime.strptime(github_datetime, '%a, %d %b %Y %H:%M:%S %Z') + return datetime.timestamp(last_modified_datetime) + + +def save_gh_leaks(code_results, search_query, organization_domains): + import leaktopus.common.db_handler as dbh + + if not code_results: + return [] + + # Gather leaks. + grouped_results = [] + for res in code_results: + clone_url = res.repository.clone_url + + leak_data = { + "file_name": res.name, + "file_url": res.html_url, + "org_emails": get_org_emails(res.decoded_content.decode(), organization_domains) + } + + # Group by repos. + if any(d['url'] == clone_url for d in grouped_results): + existing_res_key = next((i for i, item in enumerate(grouped_results) if item["url"] == clone_url), None) + grouped_results[existing_res_key]["leaks"].append(leak_data) + else: + grouped_results.append({ + "url": clone_url, + "last_modified": github_datetime_to_timestamp(res.repository.last_modified), + "leaks": [leak_data], + "search_query": search_query, + "type": "github", + "context": { + "repo_name": res.repository.name, + "owner": res.repository.owner.login if res.repository.owner.login else False, + # "organization": res.repository.organization if res.repository.organization else False, + "repo_description": res.repository.description, + "default_branch": res.repository.default_branch, + "is_fork": res.repository.fork, + "forks_count": res.repository.forks_count, + "watchers_count": res.repository.watchers_count, + "stargazers_count": res.repository.stargazers_count, + # The commit sha it was found on. + # "sha": res.sha + } + }) + + # Now, save all the (grouped) leaks to the DB. + for leaks_repo in grouped_results: + # Skip if existing and if not modified since acknowledged. + existing_leak = get_leak(clone_url) + # @todo Update leak in case that the repo was modified since previous scan and it wasn't acknowledged yet. + if existing_leak and not existing_leak["acknowledged"]: + continue + + dbh.add_leak( + leaks_repo["url"], + search_query, + "github", + json.dumps(leaks_repo["context"]), + json.dumps(leaks_repo["leaks"]), + False, + leaks_repo["last_modified"] + ) + + return grouped_results + + +def github_authenticate(): + # Authenticate to github + github_access_token = os.environ.get('GITHUB_ACCESS_TOKEN') + if not github_access_token: + print("Error: GitHub API key is missing.") + return None + try: + g = Github(github_access_token) + except BadCredentialsException: + print('Error:GitHub bad credentials.') + return None + except RateLimitExceededException as e: + raise + return g + + +def github_get_pages_object(g, search_query): + # Get Pygithub object of code_results + try: + # search_base_filter = f' stars:<{MAX_STARS_FILTER}' + # code_results = g.search_code(query=(search_query + search_base_filter)) + code_results = g.search_code(query=search_query) + total_count = code_results.totalCount + except RateLimitExceededException: + raise + if not isinstance(total_count, int): + return None + if total_count == 0: + return None + + return code_results + + +def github_get_num_of_pages(results): + # Get number of pages the code_search object has + from urllib.parse import urlparse + from urllib.parse import parse_qs + + try: + url = results._getLastPageUrl() + except RateLimitExceededException as e: + raise + except Exception as e: + print("error with getting last page url") + return None + if url: + num_of_pages = int(parse_qs(urlparse(url).query)['page'][0]) + else: + num_of_pages = 1 + + return num_of_pages + + +@celery.task(bind=True, max_retries=200) +def github_preprocessor(self, search_query, scan_id): + from leaktopus.exceptions.scans import ScanHasNoResults + + # Authenticates to github, get results object, get number of pages the object has + try: + g = github_authenticate() + if not g: + return None + + results = github_get_pages_object(g, search_query) + if not results or results.totalCount == 0: + raise ScanHasNoResults("") + + num_pages = github_get_num_of_pages(results) + if not num_pages: + return None + + except RateLimitExceededException as e: + print(f'exception raised on preprocessing github, it would be retry after 5 seconds') + raise self.retry(exc=e, countdown=5) + + answer = {"results": results, "num_pages": num_pages, "search_query": search_query} + return answer + + +def merge_pages(pages): + # Takes list of pages and returns lists of results + results = [] + for page in pages: + # Support case where page is None (e.g., scan aborted). + if not page: + return results + + results.extend(page) + return results + + +@celery.task() +def github_fetch_pages(struct, scan_id, organization_domains): + # Executing tasks to get results per page + from celery import group + from celery.result import allow_join_result + + # Error or no results + if not struct: + return [] + + # Skip step if abort was requested. + import leaktopus.common.scans as scans + from leaktopus.models.scan_status import ScanStatus + if scans.is_scan_aborting(scan_id): + return [] + + # group of tasks, one per page + task_group = group([ + github_get_page.s(results=struct["results"], page_num=n, scan_id=scan_id) for n in range(struct["num_pages"]) + ]) + result_group = task_group.apply_async() + + # Waiting for all pages to finish + while result_group.waiting(): + continue + + # Celery flag to allow join + with allow_join_result(): + if result_group.successful(): + # Gather results to list + results_group_list = result_group.join() + merged_pages = merge_pages(results_group_list) + gh_results_filtered = filter_gh_results(merged_pages, organization_domains) + return save_gh_leaks(gh_results_filtered, struct["search_query"], organization_domains) + else: + print('Error: One of the pages tasks were unsuccessful') + return [] + + +@celery.task(bind=True, max_retries=200) +def github_get_page(self, results, page_num, scan_id): + # Skip step if abort was requested. + import leaktopus.common.scans as scans + from leaktopus.models.scan_status import ScanStatus + if scans.is_scan_aborting(scan_id): + return None + + # Get results of a specific page + try: + cur_page = results.get_page(page_num) + # Force download attributes. + # @todo get rid of this code + for result in cur_page: + try: + clone_url = result.repository.clone_url + forks_count = result.repository.forks_count + stargazers = result.repository.stargazers_count + content = result.decoded_content.decode() + last_modified = result.repository.last_modified + repo_name = result.repository.name + owner = result.repository.owner.login + desc = result.repository.description + default_branch = result.repository.default_branch + fork = result.repository.fork + watchers_count = result.repository.watchers_count + except GithubException as e: + if "404" in str(e.__str__): + continue + else: + raise RateLimitExceededException + except TimeoutError as e: + continue + except RateLimitExceededException as e: + print(f'Exception raised on getting page number {page_num} github, it would be retried after 10 seconds') + raise self.retry(exc=e, countdown=10) + return cur_page + + +@celery.task() +def gh_get_repos_full_names(gh_results_struct): + repo_full_names = [] + + # Exit if gh_results_struct is empty(failure in previous steps). + if not gh_results_struct: + return [] + + for result in gh_results_struct: + repo_full_names.append(result["context"]["owner"] + "/" + result["context"]["repo_name"]) + + return repo_full_names + + +@celery.task +def update_scan_status_async(repos_full_names, scan_id): + import leaktopus.common.scans as scans + from leaktopus.models.scan_status import ScanStatus + if scans.is_scan_aborting(scan_id): + # Set the status to aborted (this is the last step). + scans.update_scan_status(scan_id, ScanStatus.SCAN_ABORTED) + return True + + # Update the scan status. + if repos_full_names: + scans.update_scan_status(scan_id, ScanStatus.SCAN_DONE) + else: + scans.update_scan_status(scan_id, ScanStatus.SCAN_FAILED) + + +@celery.task +def error_handler(request, exc, traceback, scan_id): + from leaktopus.exceptions.scans import ScanHasNoResults + + print('Task {0} raised exception: {1!r}\n{2!r}'.format( + request.id, exc, traceback)) + + import leaktopus.common.scans as scans + from leaktopus.models.scan_status import ScanStatus + if isinstance(exc, ScanHasNoResults): + # In case of no results exception - change the status to done. + scans.update_scan_status(scan_id, ScanStatus.SCAN_DONE) + else: + scans.update_scan_status(scan_id, ScanStatus.SCAN_FAILED) + + +def scan(search_query, organization_domains=[], sensitive_keywords=[]): + from leaktopus.common.github_indexer import github_index_commits + from leaktopus.common.leak_enhancer import leak_enhancer + import leaktopus.common.scans as scans + + # Do not run scan if one for the same search query is already running. + running_scans = scans.get_running_scan_by_search_query(search_query) + if running_scans: + return running_scans[0]["scan_id"] + + # Add the scan to DB. + scan_id = scans.add_scan(search_query) + + chain = github_preprocessor.s(search_query=search_query, scan_id=scan_id) |\ + github_fetch_pages.s(scan_id=scan_id, organization_domains=organization_domains) |\ + gh_get_repos_full_names.s() |\ + leak_enhancer.s( + scan_id=scan_id, + organization_domains=organization_domains, + sensitive_keywords=sensitive_keywords + ) |\ + github_index_commits.s(scan_id=scan_id) |\ + update_scan_status_async.s(scan_id=scan_id) + chain.apply_async(link_error=error_handler.s(scan_id=scan_id)) + + return scan_id + + +def get_emails_from_content(content): + return re.findall(r'[\w\.-]+@[\w\.-]+\.\w+', content) + + +def get_org_emails(content, organization_domains): + org_emails = set() + + emails = get_emails_from_content(content) + for email in emails: + if email.split("@")[1] in organization_domains: + org_emails.add(email) + + return list(org_emails) + + +def non_org_emails_count(content, organization_domains): + count = 0 + # Find all emails in the content. + emails = get_emails_from_content(content) + for email in emails: + if email.split("@")[1] not in organization_domains: + count += 1 + + return count + + +def domains_count(content): + # Find all domains (common extensions only) in the content. + # @todo Improve the extensions list. + domains = re.findall(r'[\w\.-]+\.(?:com|net|info|io)', content, re.MULTILINE) + + return len(domains) + + +def is_ignored_repo(repo_url): + # @todo Cache it in a smart way not to call the DB for each row. + ignored_patterns = dbh.get_config_github_ignored() + if not ignored_patterns: + return False + + for pattern in ignored_patterns: + if re.search(rf"{pattern['pattern']}", repo_url): + return True + + return False + + +def get_leak(leak_url): + known_leaks = dbh.get_leak(url=leak_url) + + if not known_leaks: + # New leak. + return False + + # Get the latest leak (sorted by created_at). + return known_leaks[0] + + +def is_repo_requires_scan(repo): + # Get the last known leak of the given repository. + last_known_leak = get_leak(repo.repository.clone_url) + + # An existing leak. + if not last_known_leak: + return True + + # Check if the repository was modified since the previous scan. + known_last_modified = last_known_leak["last_modified"] + last_modified = github_datetime_to_timestamp(repo.repository.last_modified) + if last_modified > known_last_modified: + return True + + return False + + +def filter_gh_results(code_results, organization_domains): + filtered_results = [] + + # Replace with a dynamic list editable by the user. + # gh_filtered_repos() + for result in code_results: + # Filter` repos with specific Regex. + if is_ignored_repo(result.repository.clone_url): + # print('ignored repo') + continue + + if not is_repo_requires_scan(result): + # print('not requires scan') + continue + + # Do not add if it has more than 2 forks. + if result.repository.forks_count >= MIN_FORKS_FILTER: + # print('Too many forks') + continue + + # Do not add if it has more than 2 stars. + # @todo Replace by :stars<2 in the search query. + if result.repository.stargazers_count >= MAX_STARS_FILTER: + # print('Too many stars') + continue + + content = result.decoded_content.decode() + + # Filter repos with a large number of non-organization email addresses. + if non_org_emails_count(content, organization_domains) >= MIN_NON_ORG_EMAIL: + # print('Many non org emails') + continue + + # Ignore repos with a large number of domains in a list. + if domains_count(content) >= MIN_DOMAINS_NUMBER: + # print('Many domains in one place.') + continue + + filtered_results.append(result) + + # In case that all results were filtered - raise no results exception. + if not filtered_results: + from leaktopus.exceptions.scans import ScanHasNoResults + raise ScanHasNoResults("All results were filtered") + + return filtered_results diff --git a/leaktopus_backend/leaktopus/common/scans.py b/leaktopus_backend/leaktopus/common/scans.py new file mode 100644 index 0000000..207be84 --- /dev/null +++ b/leaktopus_backend/leaktopus/common/scans.py @@ -0,0 +1,91 @@ +from leaktopus.models.scan_status import ScanStatus +import leaktopus.common.db_handler as dbh +from datetime import datetime + + +def db_install_scans(db): + cursor = db.cursor() + cursor.execute(''' + CREATE TABLE scans( + scan_id INTEGER PRIMARY KEY AUTOINCREMENT, + search_query TEXT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + completed_at TIMESTAMP, + status INTEGER + )''') + db.commit() + + +def get_scans(**kwargs): + sql_cond = [] + sql_vars = () + + for col in kwargs.keys(): + sql_vars = (*sql_vars, kwargs[col]) + sql_cond.append(col) + + cur = dbh.get_db().cursor() + if sql_vars: + where_str = ("=? AND ").join(sql_cond) + "=?" + res = cur.execute("SELECT * FROM scans WHERE " + where_str, sql_vars) + else: + res = cur.execute('''SELECT * FROM scans''') + + scans = res.fetchall() + + # Get the name of the status from the ScanStatus Enum. + for scan in scans: + scan["status_human"] = ScanStatus(scan["status"]).name + + return scans + + +def add_scan(search_query): + # Insert or ignore if already exists + db = dbh.get_db() + + cursor = db.cursor() + cursor.execute(''' + INSERT OR IGNORE INTO scans(search_query, status) + VALUES(?,?) + ''', (search_query, ScanStatus.SCAN_SEARCHING.value,)) + db.commit() + return cursor.lastrowid + + +def update_scan(scan_id, **kwargs): + # Insert or ignore if already exists + db = dbh.get_db() + + for col in kwargs.keys(): + col_sql = col + "=?" + db.cursor().execute("UPDATE scans SET " + col_sql + " WHERE scan_id=?", (kwargs[col],scan_id,)) + db.commit() + + +def update_scan_status(scan_id, new_status): + # Do not update a completed scan. + scan = get_scans(scan_id=scan_id)[0] + if scan["status"] in (ScanStatus.SCAN_DONE.value, ScanStatus.SCAN_ABORTED.value, ScanStatus.SCAN_FAILED.value): + return False + + if new_status.value in (ScanStatus.SCAN_DONE.value, ScanStatus.SCAN_ABORTED.value, ScanStatus.SCAN_FAILED.value): + update_scan(scan_id, status=new_status.value, completed_at=datetime.now()) + else: + update_scan(scan_id, status=new_status.value) + + return True + + +def get_running_scan_by_search_query(search_query): + cur = dbh.get_db().cursor() + res = cur.execute( + "SELECT * FROM scans WHERE search_query =? AND status NOT IN (?, ?, ?)", + (search_query, ScanStatus.SCAN_DONE.value, ScanStatus.SCAN_ABORTED.value, ScanStatus.SCAN_FAILED.value,) + ) + return res.fetchall() + + +def is_scan_aborting(scan_id): + scan = get_scans(scan_id=scan_id) + return scan[0]["status"] == ScanStatus.SCAN_ABORTING.value diff --git a/leaktopus_backend/leaktopus/common/secrets_scanner.py b/leaktopus_backend/leaktopus/common/secrets_scanner.py new file mode 100644 index 0000000..1d8a52f --- /dev/null +++ b/leaktopus_backend/leaktopus/common/secrets_scanner.py @@ -0,0 +1,108 @@ +import os +import datetime +import shutil +from git.repo.base import Repo +import subprocess +import csv +import json +from truffleHog import truffleHog +from leaktopus.common.db_handler import add_secret, get_secret +from leaktopus.common.leak_handler import get_leak_by_url + +# Max secrets to store per URL +MAX_SECRETS_PER_URL = 30 + + +def store_secrets(url, secrets): + # Filter by unique secrets. + secrets_unique = list({v['match_string']: v for v in secrets}.values()) + + # Get leak id from DB. + leak = get_leak_by_url(url) + + if not leak: + return False + + for secret in secrets_unique[0:MAX_SECRETS_PER_URL]: + # Add the secret to the DB if not already exists + if not get_secret(match_string=secret["match_string"]): + add_secret(leak["pid"], secret["html_url"], secret["signature_name"], secret["match_string"]) + + +def parse_secrets_results(repo_path, csv_path): + secrets = [] + + with open(csv_path) as csv_file: + line_count = 0 + csv_reader = csv.reader(csv_file, delimiter=',') + for row in csv_reader: + # Skip the header row. + if line_count == 0: + line_count += 1 + continue + + commit_sha = row[2][1:] + secrets.append({ + "signature_name": row[1], + "commit_sha": commit_sha, + "match_string": row[3], + "html_url": repo_path[:-4] + "/commit/" + commit_sha + }) + + line_count += 1 + + return secrets + + +def trufflehog_parse_output(url, output): + secrets = [] + + results = [] + # Limit the number of secrets to handle. + for foundIssue in output["foundIssues"]: + with open(foundIssue, "r") as issue_file: + results.append(json.loads(issue_file.read())) + # Structure + # dict_keys(['date', 'path', 'branch', 'commit'-msg, 'diff', 'stringsFound', 'printDiff', 'commitHash', 'reason']) + + # Iterate over the results, and separate the strings found. + for res in results: + for string_found in res["stringsFound"]: + secrets.append({ + "signature_name": res["reason"], + "commit_sha": res["commitHash"], + "match_string": string_found, + "html_url": url[:-4] + "/commit/" + res["commitHash"] + }) + + return secrets + + +def scan_git(url): + output = truffleHog.find_strings(url, printJson=True, surpress_output=True, do_regex=False, do_entropy=True) + if output["foundIssues"]: + return trufflehog_parse_output(url, output) + + truffleHog.clean_up(output) + + return [] + + +def scan(url, full_diff_dir): + results_path = os.path.join(full_diff_dir, 'results.csv') + + subprocess.call([ + '/usr/local/bin/shhgit', + '-config-path', + '/app/secrets/', + '-silent', + '-csv-path', + results_path, + '-local', + full_diff_dir, + ]) + + base_secrets = parse_secrets_results(url, results_path) + git_secrets = scan_git(url) + total_secrets = base_secrets + git_secrets + store_secrets(url, total_secrets) diff --git a/leaktopus_backend/leaktopus/common/sensitive_keywords.py b/leaktopus_backend/leaktopus/common/sensitive_keywords.py new file mode 100644 index 0000000..614486b --- /dev/null +++ b/leaktopus_backend/leaktopus/common/sensitive_keywords.py @@ -0,0 +1,43 @@ +import leaktopus.common.db_handler as dbh + + +def db_install_sensitive_keywords(db): + cursor = db.cursor() + cursor.execute(''' + CREATE TABLE sensitive_keywords( + id INTEGER PRIMARY KEY AUTOINCREMENT, + leak_id INTEGER, + keyword TEXT, + url TEXT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + )''') + db.commit() + + +def get_sensitive_keywords(**kwargs): + sql_cond = [] + sql_vars = () + for col in kwargs.keys(): + sql_vars = (*sql_vars, kwargs[col]) + sql_cond.append(col) + + cur = dbh.get_db().cursor() + if sql_vars: + where_str = ("=? AND ").join(sql_cond) + "=?" + res = cur.execute("SELECT * FROM sensitive_keywords WHERE " + where_str + " ORDER BY created_at DESC", sql_vars) + else: + res = cur.execute('''SELECT * FROM sensitive_keywords ORDER BY created_at DESC''') + return res.fetchall() + + +def add_sensitive_keyword(leak_id, keyword, url): + # Insert or ignore if already exists + db = dbh.get_db() + + cursor = db.cursor() + cursor.execute(''' + INSERT OR IGNORE INTO sensitive_keywords(leak_id, keyword, url) + VALUES(?,?,?) + ''', (leak_id, keyword, url,)) + db.commit() + return cursor.lastrowid diff --git a/leaktopus_backend/leaktopus/common/sensitive_keywords_extractor.py b/leaktopus_backend/leaktopus/common/sensitive_keywords_extractor.py new file mode 100644 index 0000000..a9b0067 --- /dev/null +++ b/leaktopus_backend/leaktopus/common/sensitive_keywords_extractor.py @@ -0,0 +1,94 @@ +from subprocess import run, CalledProcessError, STDOUT +import hashlib +from leaktopus.common.sensitive_keywords import add_sensitive_keyword, get_sensitive_keywords +from leaktopus.common.leak_handler import get_leak_by_url + + +def is_contributor_org_domain(author_email, committer_email, organization_domains): + contributors_domains = set() + contributors_domains.add(author_email.split('@')[1]) + contributors_domains.add(committer_email.split('@')[1]) + + for domain in contributors_domains: + if domain in organization_domains: + return True + + return False + + +def add_sensitive_keyword_to_db(leak, sensitive_keyword): + return add_sensitive_keyword( + leak["pid"], + sensitive_keyword['keyword'], + sensitive_keyword['url'] + ) + + +def get_sensitive_keyword_checksum(sensitive_keywords): + sensitive_keywords_str = sensitive_keywords['keyword'] + \ + sensitive_keywords['url'] + return hashlib.md5(sensitive_keywords_str.encode('utf-8')).hexdigest() + + +def get_existing_sensitive_keywords_checksums(leak): + existing_sensitive_keywords_checksums = [] + existing_sensitive_keywords = get_sensitive_keywords(leak_id=leak['pid']) + + for keyword in existing_sensitive_keywords: + existing_sensitive_keywords_checksums.append(get_sensitive_keyword_checksum(keyword)) + + return existing_sensitive_keywords_checksums + + +def get_github_commit_url(repo_url, commit_hash): + base_url = repo_url.rstrip('.git') + return f'{base_url}/commit/{commit_hash}' + + +def parse_sensitive_keywords_results(url, output): + # Get leak id from DB. + leak = get_leak_by_url(url) + + # Exit in case that the leak wasn't found. + # @todo Replace with exception. + if not leak: + return False + + # Calc existing sensitive keywords checksums to decide whether new should be inserted to DB. + existing_sensitive_keywords_checksums = get_existing_sensitive_keywords_checksums(leak) + + for row in output.splitlines(): + commit_hash, keyword = row.lstrip('./').split(': ') + sensitive_keyword = { + 'keyword': keyword.strip('"'), + 'url': get_github_commit_url(url, commit_hash) + } + sensitive_keyword_checksum = get_sensitive_keyword_checksum(sensitive_keyword) + + # Add the contributor to the DB if not already exists. + if sensitive_keyword_checksum not in existing_sensitive_keywords_checksums: + add_sensitive_keyword_to_db(leak, sensitive_keyword) + + +def scan(url, full_diff_dir, sensitive_keywords): + if not sensitive_keywords: + return False + + # Add the -e prefix to all keywords for our grep. + grep_keywords = [f'-e "{keyword}"' for keyword in sensitive_keywords] + grep_cmd = ['grep', '-IroF'] + grep_cmd.extend(grep_keywords) + grep_cmd.append('.') + + try: + output = run(grep_cmd, + check=True, + capture_output=True, + text=True, + cwd=full_diff_dir + ).stdout + + if output: + parse_sensitive_keywords_results(url, output) + except CalledProcessError: + return False diff --git a/leaktopus_backend/leaktopus/common/teams_alerter.py b/leaktopus_backend/leaktopus/common/teams_alerter.py new file mode 100644 index 0000000..8c72168 --- /dev/null +++ b/leaktopus_backend/leaktopus/common/teams_alerter.py @@ -0,0 +1,40 @@ +import leaktopus.utils.alerts as alerts +import config.settings as config +import pymsteams +import os +from leaktopus.app import create_celery_app + +celery = create_celery_app() + + +@celery.task() +def alert(): + teams_token = os.environ.get('TEAMS_WEBHOOK_URL') + if not teams_token: + return [] + + protocol = "https" if int(config.HTTPS_ENABLED) else "http" + new_leaks = alerts.get_leaks_to_alert(alerts.TEAMS) + for leak in new_leaks: + message = pymsteams.connectorcard(teams_token) + message.title("A new leak has been found by Leaktopus") + message.text(f"A new leak has been found for the search query: {leak['search_query']}") + message.addLinkButton("Click here to view leak ", f"{protocol}://{config.SERVER_NAME}/api/leak/{leak['pid']}") + message.send() + alerts.add_alert(leak["pid"], alerts.TEAMS) + return f"Sent {len(new_leaks)} new alerts" + + +def test_teams_webhook(): + teams_token = os.environ.get('TEAMS_WEBHOOK_URL') + if not teams_token: + return "Error: Teams webhook is missing." + try: + message = pymsteams.connectorcard(teams_token) + message.title("Testing teams webhook by Leaktopus") + message.text("Testing testing, attention please") + message.send() + except pymsteams.TeamsWebhookException as e: + return str(e) + + return "Sent message" diff --git a/leaktopus_backend/leaktopus/common/updates.py b/leaktopus_backend/leaktopus/common/updates.py new file mode 100644 index 0000000..ec262bb --- /dev/null +++ b/leaktopus_backend/leaktopus/common/updates.py @@ -0,0 +1,43 @@ +import leaktopus.common.db_handler as dbh + + +def db_install_updates(db): + cursor = db.cursor() + cursor.execute(''' + CREATE TABLE updates( + update_id TEXT PRIMARY KEY, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + status INTEGER + )''') + db.commit() + + +def get_updates(**kwargs): + sql_cond = [] + sql_vars = () + + for col in kwargs.keys(): + sql_vars = (*sql_vars, kwargs[col]) + sql_cond.append(col) + + cur = dbh.get_db().cursor() + if sql_vars: + where_str = ("=? AND ").join(sql_cond) + "=?" + res = cur.execute("SELECT * FROM updates WHERE " + where_str, sql_vars) + else: + res = cur.execute('''SELECT * FROM updates''') + + return res.fetchall() + + +def add_update(update_id): + # Insert or ignore if already exists + db = dbh.get_db() + + cursor = db.cursor() + cursor.execute(''' + INSERT OR IGNORE INTO updates(update_id, status) + VALUES(?,?) + ''', (update_id, 1,)) + db.commit() + return cursor.lastrowid diff --git a/leaktopus_backend/leaktopus/exceptions/__init__.py b/leaktopus_backend/leaktopus/exceptions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/exceptions/scans.py b/leaktopus_backend/leaktopus/exceptions/scans.py new file mode 100644 index 0000000..700691a --- /dev/null +++ b/leaktopus_backend/leaktopus/exceptions/scans.py @@ -0,0 +1,3 @@ +class ScanHasNoResults(Exception): + """Raised when there are no results""" + pass diff --git a/leaktopus_backend/leaktopus/extensions.py b/leaktopus_backend/leaktopus/extensions.py new file mode 100644 index 0000000..fbf2e68 --- /dev/null +++ b/leaktopus_backend/leaktopus/extensions.py @@ -0,0 +1,16 @@ +# from flask_caching import Cache +from flask_debugtoolbar import DebugToolbarExtension +# from flask_mail import Mail +# from flask_wtf import CSRFProtect +# from flask_static_digest import FlaskStaticDigest +from redis import Redis + +from config.settings import REDIS_URL + +# cache = Cache() + +debug_toolbar = DebugToolbarExtension() +# mail = Mail() +# csrf = CSRFProtect() +# flask_static_digest = FlaskStaticDigest() +redis = Redis.from_url(REDIS_URL) diff --git a/leaktopus_backend/leaktopus/models/__init__.py b/leaktopus_backend/leaktopus/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/models/scan_status.py b/leaktopus_backend/leaktopus/models/scan_status.py new file mode 100644 index 0000000..7fd9a67 --- /dev/null +++ b/leaktopus_backend/leaktopus/models/scan_status.py @@ -0,0 +1,12 @@ +from enum import Enum + + +# Scan statuses definitions. +class ScanStatus(Enum): + SCAN_SEARCHING = 1 + SCAN_ANALYZING = 2 + SCAN_INDEXING = 3 + SCAN_DONE = 4 + SCAN_FAILED = 5 + SCAN_ABORTED = 6 + SCAN_ABORTING = 7 diff --git a/leaktopus_backend/leaktopus/routes/__init__.py b/leaktopus_backend/leaktopus/routes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/routes/alerts/__init__.py b/leaktopus_backend/leaktopus/routes/alerts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/routes/alerts/alerts_api.py b/leaktopus_backend/leaktopus/routes/alerts/alerts_api.py new file mode 100644 index 0000000..f25facb --- /dev/null +++ b/leaktopus_backend/leaktopus/routes/alerts/alerts_api.py @@ -0,0 +1,39 @@ +from flask import Blueprint, jsonify, request, abort, current_app + +alerts_api = Blueprint('alerts_api', __name__) + + +@alerts_api.errorhandler(500) +def custom500(error): + return jsonify(results={"success": False, "message": error.description}) + + +@alerts_api.route("/api/alerts/send", methods=['GET']) +def send_alerts(): + """API For manually send pending alerts. + --- + responses: + 200: + description: Action confirmation with the number of sent alerts.. + examples: + {"results": {"message": "Sent X new alertsֿ","success": true}} + """ + import leaktopus.common.teams_alerter as teams_alerter + results = { + "success": True, + "message": teams_alerter.alert() + } + + return jsonify(results=results) + + +@alerts_api.route("/api/alerts/teams/test", methods=['GET']) +def test_teams_webhook(): + """API For sending an MS Teams test alert (to verify integration). + --- + responses: + 200: + description: Operation result with confirmation/error message. + """ + import leaktopus.common.teams_alerter as teams_alerter + return jsonify(results=teams_alerter.test_teams_webhook()) diff --git a/leaktopus_backend/leaktopus/routes/github/__init__.py b/leaktopus_backend/leaktopus/routes/github/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/routes/github/github_api.py b/leaktopus_backend/leaktopus/routes/github/github_api.py new file mode 100644 index 0000000..682a352 --- /dev/null +++ b/leaktopus_backend/leaktopus/routes/github/github_api.py @@ -0,0 +1,89 @@ +from flask import Blueprint, jsonify, request, abort, current_app +import leaktopus.common.db_handler as dbh + +github_api = Blueprint('github_api', __name__) + + +@github_api.errorhandler(500) +def custom500(error): + return jsonify(results={"success": False, "message": error.description}) + + +def response_github_ignored(): + results = { + "success": True, + "ignored_repos": dbh.get_config_github_ignored() + } + return jsonify(results=results) + + +@github_api.route("/api/preferences/github", methods=['GET']) +def get_github_prefs(): + """API For getting GitHub preferences. + --- + + responses: + 200: + description: GitHub preferences, e.g., a list of GitHub ignored repositories (regexes). + examples: + {"results": {"ignored_repos": [{"id": 1, "pattern": "^https://github.com/foo/bar"}],"success": true}} + + """ + return response_github_ignored() + + +@github_api.route("/api/preferences/github", methods=['PUT']) +def udpate_github_prefs(): + """API For updating GitHub preferences. + --- + parameters: + - name: pattern + in: body + type: string + required: true + responses: + 200: + description: GitHub preferences, e.g., a list of GitHub ignored repositories (regexes). + examples: + {"results": {"ignored_repos": [{"id": 1, "pattern": "^https://github.com/foo/bar"}],"success": true}} + + 422: + description: Content is invalid or pattern is missing. + """ + content = request.get_json(silent=True) + + if not content or not content["pattern"]: + abort(422) + + dbh.add_config_github_ignored(content["pattern"]) + dbh.delete_leak_by_url(content["pattern"]) + + return response_github_ignored() + + +@github_api.route("/api/preferences/github", methods=['DELETE']) +def delete_github_prefs(): + """API For deleting a GitHub preference. + --- + parameters: + - name: id + in: body + type: integer + required: true + responses: + 200: + description: GitHub preferences, e.g., a list of GitHub ignored repositories (regexes). + examples: + {"results": {"ignored_repos": [{"id": 1, "pattern": "^https://github.com/foo/bar"}],"success": true}} + + 422: + description: Content is invalid or preference id is missing. + """ + content = request.get_json(silent=True) + + if not content or not content["id"]: + abort(422) + + dbh.delete_config_github_ignored(int(content["id"])) + + return response_github_ignored() diff --git a/leaktopus_backend/leaktopus/routes/leaks/__init__.py b/leaktopus_backend/leaktopus/routes/leaks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/routes/leaks/leaks_api.py b/leaktopus_backend/leaktopus/routes/leaks/leaks_api.py new file mode 100644 index 0000000..ab1e3b8 --- /dev/null +++ b/leaktopus_backend/leaktopus/routes/leaks/leaks_api.py @@ -0,0 +1,145 @@ +from flask import Blueprint, jsonify, request, abort, current_app +import leaktopus.common.db_handler as dbh + +leaks_api = Blueprint('leaks_api', __name__) + + +@leaks_api.errorhandler(500) +def custom500(error): + return jsonify(results={"success": False, "message": error.description}) + + +@leaks_api.route("/api/secrets", methods=['GET']) +def secrets_scan(): + """API For scanning a repo for secrets (async). + --- + deprecated: true + parameters: + - name: repo + in: query + type: string + required: true + responses: + 200: + description: Scan initialization confirmation (without the scan data). + examples: + {"results": {"message": "Scanning, results will be available soon.","success": true}} + + 422: + description: repo is missing. + """ + repo = request.args.get('repo') + if not repo: + abort(422) + + # Scan (in an async way with Celery) + # @todo make it work. + # from leaktopus.common.secrets_scanner import secrets_scanner + # secrets_scanner.delay([repo]) + # + # results = { + # "success": True, + # "message": "Scanning, results will be available soon." + # } + results = { + "success": False, + "message": "Function not yet supported." + } + + return jsonify(results=results) + + +@leaks_api.route("/api/leak/", methods=['GET']) +def get_leak_by_id(id): + """API For getting a specific leak by its id. + --- + parameters: + - name: id + in: path + type: integer + required: true + + responses: + 200: + description: The leak data. + """ + import leaktopus.common.leak_handler as leak_handler + leak = leak_handler.get_leak_by_id(int(id)) + return jsonify(leak) + + +@leaks_api.route("/api/leak/", methods=['PATCH']) +def update_leak(id): + """API For updating a leak. + --- + parameters: + - name: id + in: path + type: integer + required: true + - name: acknowledged + in: body + type: Boolean + required: false + responses: + 200: + description: Operation result (success). + + 500: + description: Generic error. + """ + content = request.get_json(silent=True) + + if "acknowledged" in content: + try: + dbh.update_leak(int(id), acknowledged=bool(content["acknowledged"])) + except Exception: + # Throw error 500. + abort(500) + + return jsonify(results='success') + + +@leaks_api.route("/api/leak", methods=['GET']) +def fetch_leaks(): + """API For getting all leaks. + --- + parameters: + - name: q + in: query + type: string + required: false + - name: created_at + in: query + type: string + required: false + description: "Currently supports only greater than datetime. Date time format: YYYY-MM-DD%20HH:MM:SS" + responses: + 200: + description: The leaks data. + """ + # Supported filters (query params). + FILTERS = [ + 'created_at' + ] + + active_filters = { + "acknowledged": False + } + + # Add query if given. + # @todo Add limits and pagination to protect from DOS. + q = request.args.get('q') + if q: + active_filters["search_query"] = q + + for f in FILTERS: + fval = request.args.get(f) + if fval: + active_filters[f] = fval + + import leaktopus.common.leak_handler as leak_handler + results = leak_handler.fetch_leaks_from_db(active_filters) + + return jsonify(results=results) + diff --git a/leaktopus_backend/leaktopus/routes/scans/__init__.py b/leaktopus_backend/leaktopus/routes/scans/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/routes/scans/scans_api.py b/leaktopus_backend/leaktopus/routes/scans/scans_api.py new file mode 100644 index 0000000..b1fd03c --- /dev/null +++ b/leaktopus_backend/leaktopus/routes/scans/scans_api.py @@ -0,0 +1,227 @@ +from flask import Blueprint, jsonify, request, abort, current_app + +scans_api = Blueprint('scans_api', __name__) + + +@scans_api.errorhandler(500) +def custom500(error): + print(error) + return jsonify(results={"success": False, "message": error.description}) + + +@scans_api.route("/api/scan", methods=['GET']) +def start_scan(): + """API For scanning for leaks (async). + --- + parameters: + - name: q + in: query + type: string + required: true + responses: + 200: + description: Scan information. + + 422: + description: Search query is missing. + + 500: + description: Generic error. + """ + q = request.args.get('q') + if not q: + abort(422) + + # Scan (in an async way with Celery) + import leaktopus.common.scanner_async as scanner + scan_id = scanner.scan(q) + + # Get the new scan's information. + try: + import leaktopus.common.scans as scans + scan = scans.get_scans(scan_id=scan_id) + except Exception as e: + abort(500) + + return jsonify(results=scan) + + +def is_valid_sensitive_keywords(sensitive_keywords): + blacklisted_characters = r';&|"`\\!<>$' + print(sensitive_keywords) + for keyword in sensitive_keywords: + if any(elem in blacklisted_characters for elem in keyword): + return False + + return True + + +@scans_api.route("/api/scan", methods=['POST']) +def start_scan_extended(): + """API For scanning for leaks (async). + --- + parameters: + - name: q + in: body + type: string + required: true + - name: organization_domains + in: body + schema: + type: array + items: + type: string + required: false + - name: sensitive_keywords + in: body + schema: + type: array + items: + type: string + required: false + responses: + 200: + description: Scan information. + + 422: + description: Search query is missing. + + 500: + description: Generic error. + """ + content = request.get_json(silent=True) + + if not content or not content["q"]: + abort(422) + + # Get the organization domains from the request body. + org_domains = [] + if "organization_domains" in content: + org_domains = content["organization_domains"] + + # Get the sensitive keywords from the request body. + sensitive_keywords = [] + if "sensitive_keywords" in content: + if not is_valid_sensitive_keywords(content["sensitive_keywords"]): + return jsonify(results={"success": False, "error": "blacklisted characters in sensitive_keywords"}) + + sensitive_keywords = content["sensitive_keywords"] + + # Scan (in an async way with Celery) + import leaktopus.common.scanner_async as scanner + scan_id = scanner.scan(content["q"], org_domains, sensitive_keywords) + + # Get the new scan's information. + try: + import leaktopus.common.scans as scans + scan = scans.get_scans(scan_id=scan_id) + except Exception as e: + abort(500) + + return jsonify(results=scan) + + +@scans_api.route("/api/scans", methods=['GET']) +def get_scans(): + """API For getting all scans. + --- + responses: + 200: + description: Scans data. + """ + scans = None + try: + import leaktopus.common.scans as scans + # @todo Add limits and pagination. + scans = scans.get_scans() + + except Exception as e: + abort(500) + + return jsonify(results=scans) + + +@scans_api.route("/api/scan/", methods=['GET']) +def get_scan_status(id): + """API For getting a scan. + --- + parameters: + - name: id + in: path + type: integer + required: true + responses: + 200: + description: Scan data (e.g., status). + """ + scan = None + try: + import leaktopus.common.scans as scans + scan = scans.get_scans(scan_id=int(id)) + + except Exception as e: + abort(500) + + return jsonify(results=scan) + + +@scans_api.route("/api/scan//abort", methods=['GET']) +def abort_scan(id): + """API For aborting a scan. + --- + parameters: + - name: id + in: path + type: integer + required: true + responses: + 200: + description: Scan information. + 500: + description: Generic error. + """ + scan = None + + try: + import leaktopus.common.scans as scans + from leaktopus.models.scan_status import ScanStatus + + scans.update_scan_status(int(id), ScanStatus.SCAN_ABORTING) + # The async tasks should abort once the scan status is "Aborting". + + scan = scans.get_scans(scan_id=int(id)) + + except Exception as e: + abort(500) + + return jsonify(results=scan) + + +@scans_api.route("/api/scan//kill", methods=['GET']) +def kill_scan(id): + """API For killing a scan (UNGRACEFULLY), should only be used on rare cases. + --- + parameters: + - name: id + in: path + type: integer + required: true + responses: + 200: + description: Scan information. + 500: + description: Generic error. + """ + scan = None + + try: + import leaktopus.common.scans as scans + from leaktopus.models.scan_status import ScanStatus + + scans.update_scan_status(int(id), ScanStatus.SCAN_ABORTED) + scan = scans.get_scans(scan_id=int(id)) + + except Exception as e: + abort(500) + + return jsonify(results=scan) diff --git a/leaktopus_backend/leaktopus/routes/system/__init__.py b/leaktopus_backend/leaktopus/routes/system/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/routes/system/system_api.py b/leaktopus_backend/leaktopus/routes/system/system_api.py new file mode 100644 index 0000000..58d8226 --- /dev/null +++ b/leaktopus_backend/leaktopus/routes/system/system_api.py @@ -0,0 +1,67 @@ +from flask import Blueprint, jsonify, request, abort, current_app + +system_api = Blueprint('system_api', __name__) + + +@system_api.errorhandler(500) +def custom500(error): + return jsonify(results={"success": False, "message": error.description}) + + +@system_api.route('/up') +def up(): + """Health check endpoint + --- + responses: + 200: + description: Returns the string Healthy when up and running correctly. + """ + from leaktopus.common.elasticsearch_handler import es + from leaktopus.extensions import redis + + redis.ping() + es.ping() + + return 'Healthy' + + +@system_api.route("/api/install", methods=['GET']) +def system_install(): + """API for performing the initial installation of the system. + --- + responses: + 200: + description: Operation result (success). + + 500: + description: Generic error. + """ + try: + from leaktopus.common.db_handler import get_db + get_db() + except Exception as e: + print(e) + abort(500) + + return jsonify(results='success') + + +@system_api.route("/api/updatedb", methods=['GET']) +def run_updates(): + """Internal API for DB update (after version updates). + --- + responses: + 200: + description: Operation result (success). + + 500: + description: Generic error. + """ + try: + from leaktopus.common.db_updates import apply_db_updates + apply_db_updates(False) + except Exception as e: + print(e) + abort(500) + + return jsonify(results='success') diff --git a/leaktopus_backend/leaktopus/utils/__init__.py b/leaktopus_backend/leaktopus/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/leaktopus_backend/leaktopus/utils/alerts.py b/leaktopus_backend/leaktopus/utils/alerts.py new file mode 100644 index 0000000..8d088bf --- /dev/null +++ b/leaktopus_backend/leaktopus/utils/alerts.py @@ -0,0 +1,23 @@ +import leaktopus.common.db_handler as dbh + +TEAMS = "teams" + +def get_leaks_to_alert(type): + leaks = dbh.get_leak() + alerts = dbh.get_alert(type=type) + new_leaks = [] + if not alerts: + return leaks + for leak in leaks: + new_leak = True + for alert in alerts: + if leak["pid"] == alert["leak_id"]: + new_leak = False + break + if new_leak: + new_leaks.append(leak) + return new_leaks + + +def add_alert(leak_id, type): + dbh.add_alert(leak_id, type) diff --git a/leaktopus_backend/requirements.txt b/leaktopus_backend/requirements.txt new file mode 100644 index 0000000..fef8ad0 --- /dev/null +++ b/leaktopus_backend/requirements.txt @@ -0,0 +1,29 @@ +jinja2<3.1.0 +Flask==1.1.2 +itsdangerous==2.0.1 +# Flask_Caching==1.9.0 +Werkzeug==1.0.1 +flask_debugtoolbar==0.11.0 +# flask_mail==0.9.1 +# flask_static_digest==0.2.1 +# flask_wtf==0.14.3 +pymsteams==0.2.1 +Flask-Cors==3.0.10 + +# Application server for both development and production. +gunicorn==20.0.4 + +# Data and workers. +redis==3.5.3 +celery==5.0.5 + +# Tool specific libs. +PyGithub>=1.55 +elasticsearch==7.17.4 +GitPython +truffleHog==2.2.1 +pyjwt>=2.4.0 # not directly required, pinned to avoid a vulnerability + +# Documentation libs +flasgger==0.9.5 +pyyaml==6.0 \ No newline at end of file diff --git a/leaktopus_backend/secrets/config.yaml b/leaktopus_backend/secrets/config.yaml new file mode 100644 index 0000000..75119eb --- /dev/null +++ b/leaktopus_backend/secrets/config.yaml @@ -0,0 +1,488 @@ +# +# +# THIS IS SHHGIT'S CONFIGURATION FILE +# +# + +github_access_tokens: + - '' +webhook: '' # URL to which the payload is POSTed + +# This default payload will work for Slack and MatterMost. +# Consult your webhook API for additional configurations. +webhook_payload: | + { + "text": "%s" + } + +blacklisted_strings: ["AKIAIOSFODNN7EXAMPLE", "username:password", "sshpass -p $SSH_PASS", "$PASS", "$PSW", "$PASSWORD"] # skip matches containing any of these strings (case insensitive +blacklisted_extensions: [".exe", ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".tif", ".psd", ".xcf", ".zip", ".tar.gz", ".ttf", ".lock"] +blacklisted_paths: ["node_modules{sep}", "vendor{sep}bundle", "vendor{sep}cache"] # use {sep} for the OS' path seperator (i.e. / or \) +blacklisted_entropy_extensions: [".pem", "id_rsa", ".asc", ".ovpn", ".sqlite", ".sqlite3", ".log"] # additional extensions to skip entropy checks +signatures: + - part: 'extension' + match: '.pem' + name: 'Potential cryptographic private key' + - part: 'extension' + match: '.log' + name: 'Log file' + - part: 'extension' + match: '.pkcs12' + name: 'Potential cryptographic key bundle' + - part: 'extension' + match: '.p12' + name: 'Potential cryptographic key bundle' + - part: 'extension' + match: '.pfx' + name: 'Potential cryptographic key bundle' + - part: 'extension' + match: '.asc' + name: 'Potential cryptographic key bundle' + - part: 'filename' + match: 'otr.private_key' + name: 'Pidgin OTR private key' + - part: 'extension' + match: '.ovpn' + name: 'OpenVPN client configuration file' + - part: 'extension' + match: '.cscfg' + name: 'Azure service configuration schema file' + - part: 'extension' + match: '.rdp' + name: 'Remote Desktop connection file' + - part: 'extension' + match: '.mdf' + name: 'Microsoft SQL database file' + - part: 'extension' + match: '.sdf' + name: 'Microsoft SQL server compact database file' + - part: 'extension' + match: '.sqlite' + name: 'SQLite database file' + - part: 'extension' + match: '.sqlite3' + name: 'SQLite3 database file' + - part: 'extension' + match: '.bek' + name: 'Microsoft BitLocker recovery key file' + - part: 'extension' + match: '.tpm' + name: 'Microsoft BitLocker Trusted Platform Module password file' + - part: 'extension' + match: '.fve' + name: 'Windows BitLocker full volume encrypted data file' + - part: 'extension' + match: '.jks' + name: 'Java keystore file' + - part: 'extension' + match: '.psafe3' + name: 'Password Safe database file' + - part: 'filename' + match: 'secret_token.rb' + name: 'Ruby On Rails secret token configuration file' + - part: 'filename' + match: 'carrierwave.rb' + name: 'Carrierwave configuration file' + - part: 'filename' + match: 'database.yml' + name: 'Potential Ruby On Rails database configuration file' + - part: 'filename' + match: 'omniauth.rb' + name: 'OmniAuth configuration file' + - part: 'filename' + match: 'settings.py' + name: 'Django configuration file' + - part: 'extension' + match: '.agilekeychain' + name: '1Password password manager database file' + - part: 'extension' + match: '.keychain' + name: 'Apple Keychain database file' + - part: 'extension' + match: '.pcap' + name: 'Network traffic capture file' + - part: 'extension' + match: '.gnucash' + name: 'GnuCash database file' + - part: 'filename' + match: 'jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml' + name: 'Jenkins publish over SSH plugin file' + - part: 'filename' + match: 'credentials.xml' + name: 'Potential Jenkins credentials file' + - part: 'extension' + match: '.kwallet' + name: 'KDE Wallet Manager database file' + - part: 'filename' + match: 'LocalSettings.php' + name: 'Potential MediaWiki configuration file' + - part: 'extension' + match: '.tblk' + name: 'Tunnelblick VPN configuration file' + - part: 'filename' + match: 'Favorites.plist' + name: 'Sequel Pro MySQL database manager bookmark file' + - part: 'filename' + match: 'configuration.user.xpl' + name: 'Little Snitch firewall configuration file' + - part: 'extension' + match: '.dayone' + name: 'Day One journal file' + - part: 'filename' + match: 'journal.txt' + name: 'Potential jrnl journal file' + - part: 'filename' + match: 'knife.rb' + name: 'Chef Knife configuration file' + - part: 'filename' + match: 'proftpdpasswd' + name: 'cPanel backup ProFTPd credentials file' + - part: 'filename' + match: 'robomongo.json' + name: 'Robomongo MongoDB manager configuration file' + - part: 'filename' + match: 'filezilla.xml' + name: 'FileZilla FTP configuration file' + - part: 'filename' + match: 'recentservers.xml' + name: 'FileZilla FTP recent servers file' + - part: 'filename' + match: 'ventrilo_srv.ini' + name: 'Ventrilo server configuration file' + - part: 'filename' + match: 'terraform.tfvars' + name: 'Terraform variable config file' + - part: 'filename' + match: '.exports' + name: 'Shell configuration file' + - part: 'filename' + match: '.functions' + name: 'Shell configuration file' + - part: 'filename' + match: '.extra' + name: 'Shell configuration file' + - part: 'filename' + regex: '^.*_rsa$' + name: 'Private SSH key' + - part: 'filename' + regex: '^.*_dsa$' + name: 'Private SSH key' + - part: 'filename' + regex: '^.*_ed25519$' + name: 'Private SSH key' + - part: 'filename' + regex: '^.*_ecdsa$' + name: 'Private SSH key' + - part: 'path' + regex: '\.?ssh/config$' + name: 'SSH configuration file' + - part: 'extension' + regex: '^key(pair)?$' + name: 'Potential cryptographic private key' + - part: 'filename' + regex: '^\.?(bash_|zsh_|sh_|z)?history$' + name: 'Shell command history file' + - part: 'filename' + regex: '^\.?mysql_history$' + name: 'MySQL client command history file' + - part: 'filename' + regex: '^\.?psql_history$' + name: 'PostgreSQL client command history file' + - part: 'filename' + regex: '^\.?pgpass$' + name: 'PostgreSQL password file' + - part: 'filename' + regex: '^\.?irb_history$' + name: 'Ruby IRB console history file' + - part: 'path' + regex: '\.?purple/accounts\.xml$' + name: 'Pidgin chat client account configuration file' + - part: 'path' + regex: '\.?xchat2?/servlist_?\.conf$' + name: 'Hexchat/XChat IRC client server list configuration file' + - part: 'path' + regex: '\.?irssi/config$' + name: 'Irssi IRC client configuration file' + - part: 'path' + regex: '\.?recon-ng/keys\.db$' + name: 'Recon-ng web reconnaissance framework API key database' + - part: 'filename' + regex: '^\.?dbeaver-data-sources.xml$' + name: 'DBeaver SQL database manager configuration file' + - part: 'filename' + regex: '^\.?muttrc$' + name: 'Mutt e-mail client configuration file' + - part: 'filename' + regex: '^\.?s3cfg$' + name: 'S3cmd configuration file' + - part: 'path' + regex: '\.?aws/credentials$' + name: 'AWS CLI credentials file' + - part: 'filename' + regex: '^sftp-config(\.json)?$' + name: 'SFTP connection configuration file' + - part: 'filename' + regex: '^\.?trc$' + name: 'T command-line Twitter client configuration file' + - part: 'filename' + regex: '^\.?(bash|zsh|csh)rc$' + name: 'Shell configuration file' + - part: 'filename' + regex: '^\.?(bash_|zsh_)?profile$' + name: 'Shell profile configuration file' + - part: 'filename' + regex: '^\.?(bash_|zsh_)?aliases$' + name: 'Shell command alias configuration file' + - part: 'filename' + regex: 'config(\.inc)?\.php$' + name: 'PHP configuration file' + - part: 'extension' + regex: '^key(store|ring)$' + name: 'GNOME Keyring database file' + - part: 'extension' + regex: '^kdbx?$' + name: 'KeePass password manager database file' + - part: 'extension' + regex: '^sql(dump)?$' + name: 'SQL dump file' + - part: 'filename' + regex: '^\.?htpasswd$' + name: 'Apache htpasswd file' + - part: 'filename' + regex: '^(\.|_)?netrc$' + name: 'Configuration file for auto-login process' + - part: 'path' + regex: '\.?gem/credentials$' + name: 'Rubygems credentials file' + - part: 'filename' + regex: '^\.?tugboat$' + name: 'Tugboat DigitalOcean management tool configuration' + - part: 'path' + regex: 'doctl/config.yaml$' + name: 'DigitalOcean doctl command-line client configuration file' + - part: 'filename' + regex: '^\.?git-credentials$' + name: 'git-credential-store helper credentials file' + - part: 'path' + regex: 'config/hub$' + name: 'GitHub Hub command-line client configuration file' + - part: 'filename' + regex: '^\.?gitconfig$' + name: 'Git configuration file' + - part: 'path' + regex: '\.?chef/(.*)\.pem$' + name: 'Chef private key' + - part: 'path' + regex: 'etc/shadow$' + name: 'Potential Linux shadow file' + - part: 'path' + regex: 'etc/passwd$' + name: 'Potential Linux passwd file' + comment: 'Contains system user information' + - part: 'filename' + regex: '^\.?dockercfg$' + name: 'Docker configuration file' + - part: 'filename' + regex: '^\.?npmrc$' + name: 'NPM configuration file' + - part: 'filename' + regex: '^\.?env$' + name: 'Environment configuration file' + - part: 'contents' + regex: '(A3T[A-Z0-9]|AKIA|AGPA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}' + name: 'AWS Access Key ID Value' + - part: 'contents' + regex: "((\\\"|'|`)?((?i)aws)?_?((?i)access)_?((?i)key)?_?((?i)id)?(\\\"|'|`)?\\\\s{0,50}(:|=>|=)\\\\s{0,50}(\\\"|'|`)?(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}(\\\"|'|`)?)" + name: 'AWS Access Key ID' + - part: 'contents' + regex: "((\\\"|'|`)?((?i)aws)?_?((?i)account)_?((?i)id)?(\\\"|'|`)?\\\\s{0,50}(:|=>|=)\\\\s{0,50}(\\\"|'|`)?[0-9]{4}-?[0-9]{4}-?[0-9]{4}(\\\"|'|`)?)" + name: 'AWS Account ID' + - part: 'contents' + regex: "((\\\"|'|`)?((?i)aws)?_?((?i)secret)_?((?i)access)?_?((?i)key)?_?((?i)id)?(\\\"|'|`)?\\\\s{0,50}(:|=>|=)\\\\s{0,50}(\\\"|'|`)?[A-Za-z0-9/+=]{40}(\\\"|'|`)?)" + name: 'AWS Secret Access Key' + - part: 'contents' + regex: "((\\\"|'|`)?((?i)aws)?_?((?i)session)?_?((?i)token)?(\\\"|'|`)?\\\\s{0,50}(:|=>|=)\\\\s{0,50}(\\\"|'|`)?[A-Za-z0-9/+=]{16,}(\\\"|'|`)?)" + name: 'AWS Session Token' + - part: 'contents' + regex: "(?i)artifactory.{0,50}(\\\"|'|`)?[a-zA-Z0-9=]{112}(\\\"|'|`)?" + name: 'Artifactory' + - part: 'contents' + regex: "(?i)codeclima.{0,50}(\\\"|'|`)?[0-9a-f]{64}(\\\"|'|`)?" + name: 'CodeClimate' + - part: 'contents' + regex: 'EAACEdEose0cBA[0-9A-Za-z]+' + name: 'Facebook access token' + - part: 'contents' + regex: "((\\\"|'|`)?type(\\\"|'|`)?\\\\s{0,50}(:|=>|=)\\\\s{0,50}(\\\"|'|`)?service_account(\\\"|'|`)?,?)" + name: 'Google (GCM) Service account' + - part: 'contents' + regex: '(?:r|s)k_[live|test]_[0-9a-zA-Z]{24}' + name: 'Stripe API key' + - part: 'contents' + regex: '[0-9]+-[0-9A-Za-z_]{32}\.apps\.googleusercontent\.com' + name: 'Google OAuth Key' + - part: 'contents' + regex: 'AIza[0-9A-Za-z\\-_]{35}' + name: 'Google Cloud API Key' + - part: 'contents' + regex: 'ya29\\.[0-9A-Za-z\\-_]+' + name: 'Google OAuth Access Token' + - part: 'contents' + regex: 'sk_[live|test]_[0-9a-z]{32}' + name: 'Picatic API key' + - part: 'contents' + regex: 'sq0atp-[0-9A-Za-z\-_]{22}' + name: 'Square Access Token' + - part: 'contents' + regex: 'sq0csp-[0-9A-Za-z\-_]{43}' + name: 'Square OAuth Secret' + - part: 'contents' + regex: 'access_token\$production\$[0-9a-z]{16}\$[0-9a-f]{32}' + name: 'PayPal/Braintree Access Token' + - part: 'contents' + regex: 'amzn\.mws\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' + name: 'Amazon MWS Auth Token' + - part: 'contents' + regex: 'SK[0-9a-fA-F]{32}' + name: 'Twilo API Key' + - part: 'contents' + regex: 'SG\.[0-9A-Za-z\-_]{22}\.[0-9A-Za-z\-_]{43}' + name: 'SendGrid API Key' + - part: 'contents' + regex: 'key-[0-9a-zA-Z]{32}' + name: 'MailGun API Key' + - part: 'contents' + regex: '[0-9a-f]{32}-us[0-9]{12}' + name: 'MailChimp API Key' + - part: 'contents' + regex: "sshpass -p.*['|\\\"]" + name: 'SSH Password' + - part: 'contents' + regex: '(https\\://outlook\\.office.com/webhook/[0-9a-f-]{36}\\@)' + name: 'Outlook team' + - part: 'contents' + regex: "(?i)sauce.{0,50}(\\\"|'|`)?[0-9a-f-]{36}(\\\"|'|`)?" + name: 'Sauce Token' + - part: 'contents' + regex: '(xox[pboa]-[0-9]{12}-[0-9]{12}-[0-9]{12}-[a-z0-9]{32})' + name: 'Slack Token' + - part: 'contents' + regex: 'https://hooks.slack.com/services/T[a-zA-Z0-9_]{8}/B[a-zA-Z0-9_]{8}/[a-zA-Z0-9_]{24}' + name: 'Slack Webhook' + - part: 'contents' + regex: "(?i)sonar.{0,50}(\\\"|'|`)?[0-9a-f]{40}(\\\"|'|`)?" + name: 'SonarQube Docs API Key' + - part: 'contents' + regex: "(?i)hockey.{0,50}(\\\"|'|`)?[0-9a-f]{32}(\\\"|'|`)?" + name: 'HockeyApp' + - part: 'contents' + regex: '([\w+]{1,24})(://)([^$<]{1})([^\s";]{1,}):([^$<]{1})([^\s";/]{1,})@[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,24}([^\s]+)' + name: 'Username and password in URI' + - part: 'contents' + regex: 'oy2[a-z0-9]{43}' + name: 'NuGet API Key' + - part: 'contents' + regex: 'hawk\.[0-9A-Za-z\-_]{20}\.[0-9A-Za-z\-_]{20}' + name: 'StackHawk API Key' + - part: 'extension' + match: '.ppk' + name: 'Potential PuTTYgen private key' + - part: 'filename' + match: 'heroku.json' + name: 'Heroku config file' + - part: 'extension' + match: '.sqldump' + name: 'SQL Data dump file' + - part: 'filename' + match: 'dump.sql' + name: 'MySQL dump w/ bcrypt hashes' + - part: 'filename' + match: 'id_rsa_pub' + name: 'Public ssh key' + - part: 'filename' + match: 'mongoid.yml' + name: 'Mongoid config file' + - part: 'filename' + match: 'salesforce.js' + name: 'Salesforce credentials in a nodejs project' + - part: 'extension' + match: '.netrc' + name: 'netrc with SMTP credentials' + - part: 'filename' + regex: '.remote-sync.json$' + name: 'Created by remote-sync for Atom, contains FTP and/or SCP/SFTP/SSH server details and credentials' + - part: 'filename' + regex: '.esmtprc$' + name: 'esmtp configuration' + - part: 'filename' + regex: '^deployment-config.json?$' + name: 'Created by sftp-deployment for Atom, contains server details and credentials' + - part: 'filename' + regex: '.ftpconfig$' + name: 'Created by sftp-deployment for Atom, contains server details and credentials' + - part: 'contents' + regex: '-----BEGIN (EC|RSA|DSA|OPENSSH|PGP) PRIVATE KEY' + name: 'Contains a private key' + - part: 'contents' + regex: 'define(.{0,20})?(DB_CHARSET|NONCE_SALT|LOGGED_IN_SALT|AUTH_SALT|NONCE_KEY|DB_HOST|DB_PASSWORD|AUTH_KEY|SECURE_AUTH_KEY|LOGGED_IN_KEY|DB_NAME|DB_USER)(.{0,20})?[''|"].{10,120}[''|"]' + name: 'WP-Config' + - part: 'contents' + regex: '(?i)(aws_access_key_id|aws_secret_access_key)(.{0,20})?=.[0-9a-zA-Z\/+]{20,40}' + name: 'AWS cred file info' + - part: 'contents' + regex: '(?i)(facebook|fb)(.{0,20})?(?-i)[''\"][0-9a-f]{32}[''\"]' + name: 'Facebook Secret Key' + - part: 'contents' + regex: '(?i)(facebook|fb)(.{0,20})?[''\"][0-9]{13,17}[''\"]' + name: 'Facebook Client ID' + - part: 'contents' + regex: '(?i)twitter(.{0,20})?[''\"][0-9a-z]{35,44}[''\"]' + name: 'Twitter Secret Key' + - part: 'contents' + regex: '(?i)twitter(.{0,20})?[''\"][0-9a-z]{18,25}[''\"]' + name: 'Twitter Client ID' + - part: 'contents' + regex: '(?i)github(.{0,20})?(?-i)[''\"][0-9a-zA-Z]{35,40}[''\"]' + name: 'Github Key' + - part: 'contents' + regex: '(?i)heroku(.{0,20})?[''"][0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[''"]' + name: 'Heroku API key' + - part: 'contents' + regex: '(?i)linkedin(.{0,20})?(?-i)[''\"][0-9a-z]{12}[''\"]' + name: 'Linkedin Client ID' + - part: 'contents' + regex: '(?i)linkedin(.{0,20})?[''\"][0-9a-z]{16}[''\"]' + name: 'LinkedIn Secret Key' + - part: 'path' + regex: '\.?idea[\\\/]WebServers.xml$' + name: 'Created by Jetbrains IDEs, contains webserver credentials with encoded passwords (not encrypted!)' + - part: 'path' + regex: '\.?vscode[\\\/]sftp.json$' + name: 'Created by vscode-sftp for VSCode, contains SFTP/SSH server details and credentials' + - part: 'path' + regex: 'web[\\\/]ruby[\\\/]secrets.yml' + name: 'Ruby on rails secrets.yml file (contains passwords)' + - part: 'path' + regex: '\.?docker[\\\/]config.json$' + name: 'Docker registry authentication file' + - part: 'path' + regex: 'ruby[\\\/]config[\\\/]master.key$' + name: 'Rails master key (used for decrypting credentials.yml.enc for Rails 5.2+)' + - part: 'path' + regex: '\.?mozilla[\\\/]firefox[\\\/]logins.json$' + name: 'Firefox saved password collection (can be decrypted using keys4.db)' + - part: 'contents' + regex: '(.)+' + name: 'Password XML tag' + - part: 'contents' + regex: 'Bearer (ey)' + name: 'Bearer Token' + - part: 'contents' + regex: "Authorization:( )?Basic " + name: 'Bearer Basic' + - part: 'contents' + regex: "$mail->Password( )?=( )?(['\"])" + name: 'SMTP Password' + - part: 'contents' + regex: "(pwd|password|pass)( )?[=:]( )?['\"]([a-zA-Z0-9!@#$%^&*()])+['\"]" + name: 'Password in text' diff --git a/leaktopus_backend/secrets/git-extract-diff b/leaktopus_backend/secrets/git-extract-diff new file mode 100755 index 0000000..68f5fe9 --- /dev/null +++ b/leaktopus_backend/secrets/git-extract-diff @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +mkdir -p commits_data + +shas=$(git rev-list HEAD) +for sha1 in $shas; do + git show --format='' $sha1 > ./commits_data/$sha1 +done diff --git a/leaktopus_frontend/.gitignore b/leaktopus_frontend/.gitignore new file mode 100644 index 0000000..403adbc --- /dev/null +++ b/leaktopus_frontend/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/dist + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/leaktopus_frontend/Dockerfile b/leaktopus_frontend/Dockerfile new file mode 100644 index 0000000..0b32a0e --- /dev/null +++ b/leaktopus_frontend/Dockerfile @@ -0,0 +1,18 @@ +FROM node:16 +ENV JQ_VERSION=1.6 +RUN wget --no-check-certificate https://github.com/stedolan/jq/releases/download/jq-${JQ_VERSION}/jq-linux64 -O /tmp/jq-linux64 +RUN cp /tmp/jq-linux64 /usr/bin/jq +RUN chmod +x /usr/bin/jq +WORKDIR /app +COPY . . +RUN jq 'to_entries | map_values({ (.key) : ("$" + .key) }) | reduce .[] as $item ({}; . + $item)' ./src/config.json > ./src/config.tmp.json && mv ./src/config.tmp.json ./src/config.json +RUN npm install && npm run build + +FROM nginx:1.21 +ENV JSFOLDER=/usr/share/nginx/html/js/*.js +COPY ./start-nginx.sh /usr/bin/start-nginx.sh +RUN chmod +x /usr/bin/start-nginx.sh +WORKDIR /usr/share/nginx/html + +COPY --from=0 /app/dist . +ENTRYPOINT [ "start-nginx.sh" ] \ No newline at end of file diff --git a/leaktopus_frontend/README.md b/leaktopus_frontend/README.md new file mode 100644 index 0000000..703cb59 --- /dev/null +++ b/leaktopus_frontend/README.md @@ -0,0 +1,24 @@ +# leaktopus-frontend + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Lints and fixes files +``` +npm run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/leaktopus_frontend/babel.config.js b/leaktopus_frontend/babel.config.js new file mode 100644 index 0000000..e5ac36a --- /dev/null +++ b/leaktopus_frontend/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + "presets": [ + "@vue/cli-plugin-babel/preset" + ] +} \ No newline at end of file diff --git a/leaktopus_frontend/jsconfig.json b/leaktopus_frontend/jsconfig.json new file mode 100644 index 0000000..4aafc5f --- /dev/null +++ b/leaktopus_frontend/jsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "esnext", + "baseUrl": "./", + "moduleResolution": "node", + "paths": { + "@/*": [ + "src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + } +} diff --git a/leaktopus_frontend/package-lock.json b/leaktopus_frontend/package-lock.json new file mode 100644 index 0000000..45e308f --- /dev/null +++ b/leaktopus_frontend/package-lock.json @@ -0,0 +1,20181 @@ +{ + "name": "leaktopus-frontend", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "leaktopus-frontend", + "version": "0.1.0", + "dependencies": { + "@babel/polyfill": "^7.11.5", + "@fortawesome/fontawesome-svg-core": "^6.1.1", + "@fortawesome/free-brands-svg-icons": "^6.1.1", + "@fortawesome/free-regular-svg-icons": "^6.1.1", + "@fortawesome/free-solid-svg-icons": "^6.1.1", + "@fortawesome/vue-fontawesome": "^3.0.1", + "@popperjs/core": "^2.11.5", + "axios": "^0.27.2", + "bootstrap": "^5.1.3", + "core-js": "^3.8.3", + "mutationobserver-shim": "^0.3.7", + "popper.js": "^1.16.1", + "vue": "^3.2.37", + "vue-router": "^4.0.3" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "eslint": "^7.32.0", + "eslint-plugin-vue": "^8.0.3", + "sass": "^1.26.11", + "sass-loader": "^10.0.2" + } + }, + "node_modules/@achrinza/node-ipc": { + "version": "9.2.5", + "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz", + "integrity": "sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ==", + "dev": true, + "dependencies": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + }, + "engines": { + "node": "8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz", + "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", + "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.5", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.5", + "@babel/types": "^7.18.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", + "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", + "dev": true, + "dependencies": { + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "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/@babel/generator": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz", + "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.17.12", + "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.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz", + "integrity": "sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.12", + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz", + "integrity": "sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": 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.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz", + "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", + "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", + "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz", + "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz", + "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz", + "integrity": "sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/polyfill": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", + "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", + "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", + "dependencies": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@babel/polyfill/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.4 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. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/@babel/preset-env": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "@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.17.12", + "@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-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.18.1", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.18.2", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.2", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": 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" + } + }, + "node_modules/@babel/runtime": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz", + "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.5", + "@babel/types": "^7.18.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.1.tgz", + "integrity": "sha512-wVn5WJPirFTnzN6tR95abCx+ocH+3IFLXAgyavnf9hUmN0CfWoDjPT/BAWsUVwSlYYVBeCLJxaqi7ZGe4uSjBA==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.1.tgz", + "integrity": "sha512-NCg0w2YIp81f4V6cMGD9iomfsIj7GWrqmsa0ZsPh59G7PKiGN1KymZNxmF00ssuAlo/VZmpK6xazsGOwzKYUMg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.1.1.tgz", + "integrity": "sha512-mFbI/czjBZ+paUtw5NPr2IXjun5KAC8eFqh1hnxowjA4mMZxWz4GCIksq6j9ZSa6Uxj9JhjjDVEd77p2LN2Blg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.1.1.tgz", + "integrity": "sha512-xXiW7hcpgwmWtndKPOzG+43fPH7ZjxOaoeyooptSztGmJxCAflHZxXNK0GcT0uEsR4jTGQAfGklDZE5NHoBhKg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.1.1.tgz", + "integrity": "sha512-0/5exxavOhI/D4Ovm2r3vxNojGZioPwmFrKg0ZUH69Q68uFhFPs6+dhAToh6VEQBntxPRYPuT5Cg1tpNa9JUPg==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.1.tgz", + "integrity": "sha512-CdXZJoCS+aEPec26ZP7hWWU3SaJlQPZSCGdgpQ2qGl2HUmtUUNrI3zC4XWdn1JUmh3t5OuDeRG1qB4eGRNSD4A==", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "vue": ">= 3.0.0 < 4" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "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==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "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==", + "dev": true + }, + "node_modules/@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dev": true, + "dependencies": { + "easy-stack": "1.0.1" + }, + "engines": { + "node": ">=1.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true + }, + "node_modules/@popperjs/core": { + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", + "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/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 + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "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==", + "dev": 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==", + "dev": 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==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.29", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", + "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "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==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": 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==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", + "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": 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==", + "dev": true + }, + "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==", + "dev": 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==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@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==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", + "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==", + "dev": true + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", + "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz", + "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/babel-preset-app": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-5.0.6.tgz", + "integrity": "sha512-hoVr5M5RIvAL8F6MX8ZG0RvjA7MB7eDOkykK+M+qThkkrsAvlianzygnE86xN1N7JVSq7kGOyZk0Te+L20KqeQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.16", + "@babel/helper-compilation-targets": "^7.12.16", + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-decorators": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/plugin-transform-runtime": "^7.12.15", + "@babel/preset-env": "^7.12.16", + "@babel/runtime": "^7.12.13", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.8.3", + "core-js-compat": "^3.8.3", + "semver": "^7.3.4" + }, + "peerDependencies": { + "@babel/core": "*", + "core-js": "^3", + "vue": "^2 || ^3.2.13" + }, + "peerDependenciesMeta": { + "core-js": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-preset-app/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/babel-preset-jsx": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz", + "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==", + "dev": true, + "dependencies": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz", + "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz", + "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-functional-vue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz", + "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-inject-h": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz", + "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz", + "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/babel-sugar-v-on": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz", + "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-overlay": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-5.0.6.tgz", + "integrity": "sha512-rghCRMPVQ4FIKmQy8ipn8fKztdaQSQTktAKob2SGuEL/iBWfclSMAQCXfj908nyzOBymo+q/Sn/oiLhi07oHlA==", + "dev": true + }, + "node_modules/@vue/cli-plugin-babel": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.6.tgz", + "integrity": "sha512-ruQhfhj2WM6Fe/VDQneQc/kqNp/p138SjQMfz7q/rxMTMG1kpV5B0jYWschXHXLQ6aDsFnqmBmIK+XjU3XTF3g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.16", + "@vue/babel-preset-app": "^5.0.6", + "@vue/cli-shared-utils": "^5.0.6", + "babel-loader": "^8.2.2", + "thread-loader": "^3.0.0", + "webpack": "^5.54.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-eslint": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.6.tgz", + "integrity": "sha512-fuc8w2IujzoenA/cdr/QYYMq2yaI1fYr0Fqom/M55B+DmW19GIuIRxYQvh0CEeCbFB2hAl3Flrazfx96/nAaQA==", + "dev": true, + "dependencies": { + "@vue/cli-shared-utils": "^5.0.6", + "eslint-webpack-plugin": "^3.1.0", + "globby": "^11.0.2", + "webpack": "^5.54.0", + "yorkie": "^2.0.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0", + "eslint": ">=7.5.0" + } + }, + "node_modules/@vue/cli-plugin-router": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-5.0.6.tgz", + "integrity": "sha512-5ikUdfsSoKqpBhB5GhGYijH6mJnU+ZGqDv3QBf0brDeeh7PhClntxNAOLkB73c+LNxjBrlNCTkItuByF+AD29w==", + "dev": true, + "dependencies": { + "@vue/cli-shared-utils": "^5.0.6" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-vuex": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.6.tgz", + "integrity": "sha512-9bwkaLxGqqrD5FPN7iNsIe5x60P0nScioMQvHf2ZIIoFAiM5yuTgOQkdSKGBhn0YG4IjYd1tnlVY4Q/P4ZHaTA==", + "dev": true, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-service": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-5.0.6.tgz", + "integrity": "sha512-XSiTCjUMk8adjvQIJXBxk3ltEBLyBme8rpqdhJrpgCgSj+8pcPPyYKs1M0petkhwLMv3mEXVPNQmXKFzpdWVrw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.12.16", + "@soda/friendly-errors-webpack-plugin": "^1.8.0", + "@soda/get-current-script": "^1.0.2", + "@types/minimist": "^1.2.0", + "@vue/cli-overlay": "^5.0.6", + "@vue/cli-plugin-router": "^5.0.6", + "@vue/cli-plugin-vuex": "^5.0.6", + "@vue/cli-shared-utils": "^5.0.6", + "@vue/component-compiler-utils": "^3.3.0", + "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", + "@vue/web-component-wrapper": "^1.3.0", + "acorn": "^8.0.5", + "acorn-walk": "^8.0.2", + "address": "^1.1.2", + "autoprefixer": "^10.2.4", + "browserslist": "^4.16.3", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.10", + "clipboardy": "^2.3.0", + "cliui": "^7.0.4", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.5.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "cssnano": "^5.0.0", + "debug": "^4.1.1", + "default-gateway": "^6.0.3", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^5.1.0", + "is-file-esm": "^1.0.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "mini-css-extract-plugin": "^2.5.3", + "minimist": "^1.2.5", + "module-alias": "^2.2.2", + "portfinder": "^1.0.26", + "postcss": "^8.2.6", + "postcss-loader": "^6.1.1", + "progress-webpack-plugin": "^1.0.12", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^5.1.1", + "thread-loader": "^3.0.0", + "vue-loader": "^17.0.0", + "vue-style-loader": "^4.1.3", + "webpack": "^5.54.0", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-chain": "^6.5.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.7.3", + "webpack-virtual-modules": "^0.4.2", + "whatwg-fetch": "^3.6.2" + }, + "bin": { + "vue-cli-service": "bin/vue-cli-service.js" + }, + "engines": { + "node": "^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "vue-template-compiler": "^2.0.0", + "webpack-sources": "*" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "less-loader": { + "optional": true + }, + "pug-plain-loader": { + "optional": true + }, + "raw-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/@vue/cli-shared-utils": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-5.0.6.tgz", + "integrity": "sha512-5HmlRtMByOCFO0P3mMUx8dVruTRhZ3pqQ0f1cCH9TmAoDjetmD/Ib7yx/5KxTHV8QY3xZJxYvgAmOU5C49K5xA==", + "dev": true, + "dependencies": { + "@achrinza/node-ipc": "^9.2.5", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@vue/cli-shared-utils/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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@vue/cli-shared-utils/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 + }, + "node_modules/@vue/cli-shared-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz", + "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz", + "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==", + "dependencies": { + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz", + "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-ssr": "3.2.37", + "@vue/reactivity-transform": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz", + "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==", + "dependencies": { + "@vue/compiler-dom": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/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 + }, + "node_modules/@vue/component-compiler-utils/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" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/@vue/devtools-api": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.1.4.tgz", + "integrity": "sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==" + }, + "node_modules/@vue/reactivity": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz", + "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==", + "dependencies": { + "@vue/shared": "3.2.37" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz", + "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz", + "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==", + "dependencies": { + "@vue/reactivity": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz", + "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==", + "dependencies": { + "@vue/runtime-core": "3.2.37", + "@vue/shared": "3.2.37", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz", + "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==", + "dependencies": { + "@vue/compiler-ssr": "3.2.37", + "@vue/shared": "3.2.37" + }, + "peerDependencies": { + "vue": "3.2.37" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz", + "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==" + }, + "node_modules/@vue/vue-loader-v15": { + "name": "vue-loader", + "version": "15.9.8", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", + "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", + "dev": true, + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/@vue/vue-loader-v15/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "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==", + "dev": 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==", + "dev": 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==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": 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==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", + "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==", + "dev": true, + "engines": { + "node": ">= 10.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==", + "dev": 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==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": 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==", + "dev": 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==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/argparse": { + "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" + } + }, + "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==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "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/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/babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": 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.10.3", + "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/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dev": 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==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", + "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", + "dev": 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/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "@popperjs/core": "^2.10.2" + } + }, + "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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", + "escalade": "^3.1.1", + "node-releases": "^2.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "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==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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.30001356", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001356.tgz", + "integrity": "sha512-/30854bktMLhxtjieIxsrJBfs2gTM1pel6MXKF3K+RdIVJZcsn2A2QdhsuR4/p9+R204fZw0zCBBhktX8xWuyQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "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/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "node_modules/clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-highlight/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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-highlight/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 + }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "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==", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": 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": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": 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==", + "dev": 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/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": 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==", + "dev": 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==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/copy-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": 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/core-js": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.1.tgz", + "integrity": "sha512-wfMYHWi1WQjpgZNC9kAlN4ut04TM9fUTdi7CqIoTVM7yaiOUQTklOzfb+oWH3r9edQcT3F887swuVmxrV+CC8w==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.1.tgz", + "integrity": "sha512-KeYrEc8t6FJsKYB2qnDwRHWaC0cJNaqlHfCpMe5q3j/W1nje3moib/txNklddLPCtGb+etcBIyJ8zuMa/LN5/A==", + "dev": true, + "dependencies": { + "browserslist": "^4.20.4", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.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==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", + "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "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.2.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": 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/css-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==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-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==", + "dev": true + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "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==", + "dev": 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": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "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==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.12", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.12.tgz", + "integrity": "sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.12", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.12", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", + "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.3.0", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.2", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.6", + "postcss-merge-rules": "^5.1.2", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.3", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": 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==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/default-gateway/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==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": 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/default-gateway/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/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==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/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==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": 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/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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": 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==", + "dev": 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==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "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==", + "dev": 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/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": 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==", + "dev": 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==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "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==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.161", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.161.tgz", + "integrity": "sha512-sTjBRhqh6wFodzZtc5Iu8/R95OkwaPNn7tj/TaDU5nu/5EFiQDtADGAXdR4tJcTEHlYfJpHqigzJqHvPgehP8A==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": 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==", + "dev": 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==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": 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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", + "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", + "dev": true, + "dependencies": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^8.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg==", + "dev": true, + "dependencies": { + "@types/eslint": "^7.28.2", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": 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/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/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 + }, + "node_modules/eslint/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==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/eslint/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/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==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "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.10.3", + "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/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "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==", + "dev": 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==", + "dev": true + }, + "node_modules/express/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": 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-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dev": 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==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": 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==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.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==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": 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==", + "dev": 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==", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "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==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": 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/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": 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==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": 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.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": 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==", + "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": [ + "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==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "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==", + "dev": 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==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "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", + "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/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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": 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/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": 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==", + "dev": 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==", + "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" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "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==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": 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/hpack.js/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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": 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==", + "dev": 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-tags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": 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==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "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==", + "dev": 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==", + "dev": 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.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": 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==", + "dev": 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-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==", + "dev": 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/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==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "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==", + "dev": 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==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": 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==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": 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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "dependencies": { + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "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==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-file-esm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-file-esm/-/is-file-esm-1.0.0.tgz", + "integrity": "sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==", + "dev": true, + "dependencies": { + "read-pkg-up": "^7.0.1" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "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==", + "dev": 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==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true + }, + "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==", + "dev": 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/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "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==", + "dev": 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==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": 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==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.4.0.tgz", + "integrity": "sha512-mZ0BHeSn/ohL+Ib+b+JnxC59vcNz6v5IR9d0CuM8f0x8ni8oK3IIG6G0vMkpxc0gFsmvINkztGOHiWTaX4BmAg==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.6.1" + } + }, + "node_modules/launch-editor-middleware": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.4.0.tgz", + "integrity": "sha512-/M7AX/6xktZY60KE7j71XLrj9U6H5TBoP+mJzhYB3fcdAq8rcazit/K0qWiu1jvytUPXP4lJRd1VJFwvdMQ/uw==", + "dev": true, + "dependencies": { + "launch-editor": "^2.4.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": 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==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "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==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": 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==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/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 + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "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==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "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==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.6.tgz", + "integrity": "sha512-rH9mjopto6Wkr7RFuH9l9dk3qb2XGOcYKr7xMhaYqfzuJqOqhRrcFvfD7JMuPj6SLmPreh5+6eAuv36NFAU+Mw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "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==", + "dev": true + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": 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/mini-css-extract-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==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-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==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "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==", + "dev": true + }, + "node_modules/minimatch": { + "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" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/module-alias": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz", + "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mutationobserver-shim": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/mutationobserver-shim/-/mutationobserver-shim-0.3.7.tgz", + "integrity": "sha512-oRIDTyZQU96nAiz2AQyngwx1e89iApl2hN5AOYwyxLUB47UYsU3Wv9lJWqH5y/QdiYkc5HQLi23ZNB3fELdHcQ==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": 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==", + "dev": 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==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": 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==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": 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==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": 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==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/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 + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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 + }, + "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==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "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==" + }, + "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" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", + "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", + "dev": true, + "dependencies": { + "browserslist": "^4.20.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.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/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", + "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", + "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", + "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.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==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": 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==", + "dev": 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==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.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==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "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==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "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==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/progress-webpack-plugin": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz", + "integrity": "sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA==", + "dev": true, + "dependencies": { + "chalk": "^2.1.0", + "figures": "^2.0.0", + "log-update": "^2.3.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.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==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/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==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": 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==", + "dev": 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==", + "dev": 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/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "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" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": 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/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": 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==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "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==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sass": { + "version": "1.52.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.3.tgz", + "integrity": "sha512-LNNPJ9lafx+j1ArtA7GyEJm9eawXN8KlA1+5dF6IZyoONg1Tyo/g+muOsENWJH/2Q1FHbbV4UwliU0cXMa/VIA==", + "dev": 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": ">=12.0.0" + } + }, + "node_modules/sass-loader": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.2.1.tgz", + "integrity": "sha512-RRvWl+3K2LSMezIsd008ErK4rk6CulIMSwrcc2aZvjymUgKo/vjXGp1rSWmfTUX7bblEOz8tst4wBwWtCGBqKA==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.13.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", + "sass": "^1.3.0", + "webpack": "^4.36.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/sass-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/sass-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": 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/sass-loader/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": 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/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "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==", + "dev": 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==", + "dev": true + }, + "node_modules/sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/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 + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "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/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==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": 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==", + "dev": 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/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/table": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": 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/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", + "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "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.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.7.2" + }, + "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-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": 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/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==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-loader": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-3.0.4.tgz", + "integrity": "sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==", + "dev": true, + "dependencies": { + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/thread-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/thread-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": 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/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": 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==", + "dev": true, + "dependencies": { + "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.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "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" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "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==", + "dev": 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==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "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==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vue": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz", + "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==", + "dependencies": { + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-sfc": "3.2.37", + "@vue/runtime-dom": "3.2.37", + "@vue/server-renderer": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "node_modules/vue-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "dependencies": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "node_modules/vue-loader": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.0.tgz", + "integrity": "sha512-OWSXjrzIvbF2LtOUmxT3HYgwwubbfFelN8PAP9R9dwpIkj48TVioHhWWSx7W7fk+iF5cgg3CBJRxwTdtLU4Ecg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" + } + }, + "node_modules/vue-loader/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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/vue-loader/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/vue-loader/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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vue-loader/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 + }, + "node_modules/vue-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/vue-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-router": { + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.16.tgz", + "integrity": "sha512-JcO7cb8QJLBWE+DfxGUL3xUDOae/8nhM1KVdnudadTAORbuxIC/xAydC5Zr/VLHUDQi1ppuTF5/rjBGzgzrJNA==", + "dependencies": { + "@vue/devtools-api": "^6.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/webpack": { + "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "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.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", + "dev": true, + "dependencies": { + "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": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/webpack-bundle-analyzer/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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/webpack-bundle-analyzer/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 + }, + "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==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "dev": true, + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "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/webpack-dev-middleware/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": 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/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==", + "dev": 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==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.2.tgz", + "integrity": "sha512-H95Ns95dP24ZsEzO6G9iT+PNw4Q7ltll1GfJHV4fKphuHWgKFzGHWi4alTlTnpk1SPPk41X+l2RB7rLfIhnB9Q==", + "dev": 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.1", + "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": "^1.6.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", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": 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/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==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "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==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "dev": 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/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz", + "integrity": "sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": 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/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/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 + }, + "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 + }, + "node_modules/ws": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", + "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": 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==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": 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==", + "dev": true, + "dependencies": { + "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/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==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/yorkie/node_modules/execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/yorkie/node_modules/normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yorkie/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + }, + "dependencies": { + "@achrinza/node-ipc": { + "version": "9.2.5", + "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.5.tgz", + "integrity": "sha512-kBX7Ay911iXZ3VZ1pYltj3Rfu7Ow9H7sK4H4RSfWIfWR2JKNB40K808wppoRIEzE2j2hXLU+r6TJgCAliCGhyQ==", + "dev": true, + "requires": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + } + }, + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz", + "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==", + "dev": true + }, + "@babel/core": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.5.tgz", + "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.5", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.5", + "@babel/types": "^7.18.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/eslint-parser": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", + "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", + "dev": true, + "requires": { + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "requires": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + } + }, + "@babel/helper-simple-access": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "dev": true, + "requires": { + "@babel/types": "^7.18.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + } + }, + "@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.5.tgz", + "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.17.12", + "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.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.17.12" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz", + "integrity": "sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.12", + "charcodes": "^0.2.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.17.12" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz", + "integrity": "sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz", + "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", + "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", + "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz", + "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz", + "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz", + "integrity": "sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/polyfill": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", + "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + } + } + }, + "@babel/preset-env": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "@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.17.12", + "@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-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.18.1", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.18.2", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.2", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@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" + } + }, + "@babel/runtime": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.18.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.5.tgz", + "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.5", + "@babel/types": "^7.18.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "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==", + "dev": true + } + } + }, + "@fortawesome/fontawesome-common-types": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.1.tgz", + "integrity": "sha512-wVn5WJPirFTnzN6tR95abCx+ocH+3IFLXAgyavnf9hUmN0CfWoDjPT/BAWsUVwSlYYVBeCLJxaqi7ZGe4uSjBA==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.1.tgz", + "integrity": "sha512-NCg0w2YIp81f4V6cMGD9iomfsIj7GWrqmsa0ZsPh59G7PKiGN1KymZNxmF00ssuAlo/VZmpK6xazsGOwzKYUMg==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.1.1" + } + }, + "@fortawesome/free-brands-svg-icons": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.1.1.tgz", + "integrity": "sha512-mFbI/czjBZ+paUtw5NPr2IXjun5KAC8eFqh1hnxowjA4mMZxWz4GCIksq6j9ZSa6Uxj9JhjjDVEd77p2LN2Blg==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.1.1" + } + }, + "@fortawesome/free-regular-svg-icons": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.1.1.tgz", + "integrity": "sha512-xXiW7hcpgwmWtndKPOzG+43fPH7ZjxOaoeyooptSztGmJxCAflHZxXNK0GcT0uEsR4jTGQAfGklDZE5NHoBhKg==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.1.1" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.1.1.tgz", + "integrity": "sha512-0/5exxavOhI/D4Ovm2r3vxNojGZioPwmFrKg0ZUH69Q68uFhFPs6+dhAToh6VEQBntxPRYPuT5Cg1tpNa9JUPg==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.1.1" + } + }, + "@fortawesome/vue-fontawesome": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.1.tgz", + "integrity": "sha512-CdXZJoCS+aEPec26ZP7hWWU3SaJlQPZSCGdgpQ2qGl2HUmtUUNrI3zC4XWdn1JUmh3t5OuDeRG1qB4eGRNSD4A==", + "requires": {} + }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@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==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@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==", + "dev": true + }, + "@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dev": true, + "requires": { + "easy-stack": "1.0.1" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@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==", + "dev": true + }, + "@popperjs/core": { + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", + "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==" + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.29", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", + "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@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==", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz", + "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@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==", + "dev": true + }, + "@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==", + "dev": true + }, + "@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==", + "dev": true + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", + "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==", + "dev": true + }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", + "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz", + "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true + } + } + }, + "@vue/babel-preset-app": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-5.0.6.tgz", + "integrity": "sha512-hoVr5M5RIvAL8F6MX8ZG0RvjA7MB7eDOkykK+M+qThkkrsAvlianzygnE86xN1N7JVSq7kGOyZk0Te+L20KqeQ==", + "dev": true, + "requires": { + "@babel/core": "^7.12.16", + "@babel/helper-compilation-targets": "^7.12.16", + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-decorators": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/plugin-transform-runtime": "^7.12.15", + "@babel/preset-env": "^7.12.16", + "@babel/runtime": "^7.12.13", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.8.3", + "core-js-compat": "^3.8.3", + "semver": "^7.3.4" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@vue/babel-preset-jsx": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz", + "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + } + }, + "@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz", + "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz", + "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz", + "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz", + "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz", + "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true + } + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz", + "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "@vue/cli-overlay": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-5.0.6.tgz", + "integrity": "sha512-rghCRMPVQ4FIKmQy8ipn8fKztdaQSQTktAKob2SGuEL/iBWfclSMAQCXfj908nyzOBymo+q/Sn/oiLhi07oHlA==", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.6.tgz", + "integrity": "sha512-ruQhfhj2WM6Fe/VDQneQc/kqNp/p138SjQMfz7q/rxMTMG1kpV5B0jYWschXHXLQ6aDsFnqmBmIK+XjU3XTF3g==", + "dev": true, + "requires": { + "@babel/core": "^7.12.16", + "@vue/babel-preset-app": "^5.0.6", + "@vue/cli-shared-utils": "^5.0.6", + "babel-loader": "^8.2.2", + "thread-loader": "^3.0.0", + "webpack": "^5.54.0" + } + }, + "@vue/cli-plugin-eslint": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.6.tgz", + "integrity": "sha512-fuc8w2IujzoenA/cdr/QYYMq2yaI1fYr0Fqom/M55B+DmW19GIuIRxYQvh0CEeCbFB2hAl3Flrazfx96/nAaQA==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^5.0.6", + "eslint-webpack-plugin": "^3.1.0", + "globby": "^11.0.2", + "webpack": "^5.54.0", + "yorkie": "^2.0.0" + } + }, + "@vue/cli-plugin-router": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-5.0.6.tgz", + "integrity": "sha512-5ikUdfsSoKqpBhB5GhGYijH6mJnU+ZGqDv3QBf0brDeeh7PhClntxNAOLkB73c+LNxjBrlNCTkItuByF+AD29w==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^5.0.6" + } + }, + "@vue/cli-plugin-vuex": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.6.tgz", + "integrity": "sha512-9bwkaLxGqqrD5FPN7iNsIe5x60P0nScioMQvHf2ZIIoFAiM5yuTgOQkdSKGBhn0YG4IjYd1tnlVY4Q/P4ZHaTA==", + "dev": true, + "requires": {} + }, + "@vue/cli-service": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-5.0.6.tgz", + "integrity": "sha512-XSiTCjUMk8adjvQIJXBxk3ltEBLyBme8rpqdhJrpgCgSj+8pcPPyYKs1M0petkhwLMv3mEXVPNQmXKFzpdWVrw==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.12.16", + "@soda/friendly-errors-webpack-plugin": "^1.8.0", + "@soda/get-current-script": "^1.0.2", + "@types/minimist": "^1.2.0", + "@vue/cli-overlay": "^5.0.6", + "@vue/cli-plugin-router": "^5.0.6", + "@vue/cli-plugin-vuex": "^5.0.6", + "@vue/cli-shared-utils": "^5.0.6", + "@vue/component-compiler-utils": "^3.3.0", + "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", + "@vue/web-component-wrapper": "^1.3.0", + "acorn": "^8.0.5", + "acorn-walk": "^8.0.2", + "address": "^1.1.2", + "autoprefixer": "^10.2.4", + "browserslist": "^4.16.3", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.10", + "clipboardy": "^2.3.0", + "cliui": "^7.0.4", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.5.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "cssnano": "^5.0.0", + "debug": "^4.1.1", + "default-gateway": "^6.0.3", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^5.1.0", + "is-file-esm": "^1.0.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "mini-css-extract-plugin": "^2.5.3", + "minimist": "^1.2.5", + "module-alias": "^2.2.2", + "portfinder": "^1.0.26", + "postcss": "^8.2.6", + "postcss-loader": "^6.1.1", + "progress-webpack-plugin": "^1.0.12", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^5.1.1", + "thread-loader": "^3.0.0", + "vue-loader": "^17.0.0", + "vue-style-loader": "^4.1.3", + "webpack": "^5.54.0", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-chain": "^6.5.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.7.3", + "webpack-virtual-modules": "^0.4.2", + "whatwg-fetch": "^3.6.2" + } + }, + "@vue/cli-shared-utils": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-5.0.6.tgz", + "integrity": "sha512-5HmlRtMByOCFO0P3mMUx8dVruTRhZ3pqQ0f1cCH9TmAoDjetmD/Ib7yx/5KxTHV8QY3xZJxYvgAmOU5C49K5xA==", + "dev": true, + "requires": { + "@achrinza/node-ipc": "^9.2.5", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@vue/compiler-core": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz", + "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz", + "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==", + "requires": { + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz", + "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-ssr": "3.2.37", + "@vue/reactivity-transform": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-ssr": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz", + "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==", + "requires": { + "@vue/compiler-dom": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2 || ^2.0.0", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "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, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "@vue/devtools-api": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.1.4.tgz", + "integrity": "sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==" + }, + "@vue/reactivity": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz", + "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==", + "requires": { + "@vue/shared": "3.2.37" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz", + "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.37", + "@vue/shared": "3.2.37", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "@vue/runtime-core": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz", + "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==", + "requires": { + "@vue/reactivity": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/runtime-dom": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz", + "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==", + "requires": { + "@vue/runtime-core": "3.2.37", + "@vue/shared": "3.2.37", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz", + "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==", + "requires": { + "@vue/compiler-ssr": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "@vue/shared": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz", + "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==" + }, + "@vue/vue-loader-v15": { + "version": "npm:vue-loader@15.9.8", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", + "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + } + } + }, + "@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "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==", + "dev": true + }, + "address": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", + "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "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==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "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==", + "dev": true + }, + "autoprefixer": { + "version": "10.4.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", + "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", + "dev": true, + "requires": { + "browserslist": "^4.20.3", + "caniuse-lite": "^1.0.30001335", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "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 + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "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==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "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 + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "requires": { + "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.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", + "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "requires": {} + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", + "escalade": "^3.1.1", + "node-releases": "^2.0.5", + "picocolors": "^1.0.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "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==", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001356", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001356.tgz", + "integrity": "sha512-/30854bktMLhxtjieIxsrJBfs2gTM1pel6MXKF3K+RdIVJZcsn2A2QdhsuR4/p9+R204fZw0zCBBhktX8xWuyQ==", + "dev": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "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==", + "dev": true + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "core-js": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.1.tgz", + "integrity": "sha512-wfMYHWi1WQjpgZNC9kAlN4ut04TM9fUTdi7CqIoTVM7yaiOUQTklOzfb+oWH3r9edQcT3F887swuVmxrV+CC8w==" + }, + "core-js-compat": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.1.tgz", + "integrity": "sha512-KeYrEc8t6FJsKYB2qnDwRHWaC0cJNaqlHfCpMe5q3j/W1nje3moib/txNklddLPCtGb+etcBIyJ8zuMa/LN5/A==", + "dev": true, + "requires": { + "browserslist": "^4.20.4", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "css-declaration-sorter": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", + "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", + "dev": true, + "requires": {} + }, + "css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "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.2.0", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "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 + }, + "cssnano": { + "version": "5.1.12", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.12.tgz", + "integrity": "sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.2.12", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.12", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", + "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.3.0", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.2", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.6", + "postcss-merge-rules": "^5.1.2", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.3", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "requires": {} + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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==", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "execa": "^5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "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" + } + }, + "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==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "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==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "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==", + "dev": true + }, + "dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true + }, + "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==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.161", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.161.tgz", + "integrity": "sha512-sTjBRhqh6wFodzZtc5Iu8/R95OkwaPNn7tj/TaDU5nu/5EFiQDtADGAXdR4tJcTEHlYfJpHqigzJqHvPgehP8A==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "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==", + "dev": true, + "requires": { + "stackframe": "^1.3.4" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "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==", + "dev": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "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==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "eslint-plugin-vue": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", + "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", + "dev": true, + "requires": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^8.0.1" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "eslint-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg==", + "dev": true, + "requires": { + "@types/eslint": "^7.28.2", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "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 + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "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.10.3", + "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" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "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==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "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==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "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==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + }, + "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==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "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 + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "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==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "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" + } + }, + "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==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "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==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "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" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, + "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==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "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" + } + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "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" + } + }, + "html-tags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "dev": true + }, + "html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "requires": { + "@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" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "@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" + } + }, + "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==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "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, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-file-esm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-file-esm/-/is-file-esm-1.0.0.tgz", + "integrity": "sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==", + "dev": true, + "requires": { + "read-pkg-up": "^7.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "launch-editor": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.4.0.tgz", + "integrity": "sha512-mZ0BHeSn/ohL+Ib+b+JnxC59vcNz6v5IR9d0CuM8f0x8ni8oK3IIG6G0vMkpxc0gFsmvINkztGOHiWTaX4BmAg==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.4.0.tgz", + "integrity": "sha512-/M7AX/6xktZY60KE7j71XLrj9U6H5TBoP+mJzhYB3fcdAq8rcazit/K0qWiu1jvytUPXP4lJRd1VJFwvdMQ/uw==", + "dev": true, + "requires": { + "launch-editor": "^2.4.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "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==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "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==", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "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==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "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==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "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==", + "dev": true + }, + "memfs": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.6.tgz", + "integrity": "sha512-rH9mjopto6Wkr7RFuH9l9dk3qb2XGOcYKr7xMhaYqfzuJqOqhRrcFvfD7JMuPj6SLmPreh5+6eAuv36NFAU+Mw==", + "dev": true, + "requires": { + "fs-monkey": "^1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "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==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "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==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "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==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "module-alias": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz", + "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==", + "dev": true + }, + "mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "mutationobserver-shim": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/mutationobserver-shim/-/mutationobserver-shim-0.3.7.tgz", + "integrity": "sha512-oRIDTyZQU96nAiz2AQyngwx1e89iApl2hN5AOYwyxLUB47UYsU3Wv9lJWqH5y/QdiYkc5HQLi23ZNB3fELdHcQ==" + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "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==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "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==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "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==", + "dev": true + }, + "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, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + } + }, + "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==", + "dev": true + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@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" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "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 + }, + "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==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", + "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", + "dev": true, + "requires": { + "browserslist": "^4.20.3", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true, + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "requires": {} + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", + "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + } + }, + "postcss-merge-rules": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", + "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", + "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "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==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "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==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dev": true, + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "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 + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "optional": true + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "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==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "progress-webpack-plugin": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz", + "integrity": "sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "figures": "^2.0.0", + "log-update": "^2.3.0" + } + }, + "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==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "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==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.52.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.3.tgz", + "integrity": "sha512-LNNPJ9lafx+j1ArtA7GyEJm9eawXN8KlA1+5dF6IZyoONg1Tyo/g+muOsENWJH/2Q1FHbbV4UwliU0cXMa/VIA==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.2.1.tgz", + "integrity": "sha512-RRvWl+3K2LSMezIsd008ErK4rk6CulIMSwrcc2aZvjymUgKo/vjXGp1rSWmfTUX7bblEOz8tst4wBwWtCGBqKA==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "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==", + "dev": true + }, + "sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + } + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "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==" + }, + "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==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "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" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "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==", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "dev": true + }, + "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==", + "dev": true + }, + "stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "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==", + "dev": true + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "table": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "terser": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", + "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.7", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.7.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "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==", + "dev": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-3.0.4.tgz", + "integrity": "sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==", + "dev": true, + "requires": { + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "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==", + "dev": true + }, + "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, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "dev": true + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "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 + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vue": { + "version": "3.2.37", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz", + "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==", + "requires": { + "@vue/compiler-dom": "3.2.37", + "@vue/compiler-sfc": "3.2.37", + "@vue/runtime-dom": "3.2.37", + "@vue/server-renderer": "3.2.37", + "@vue/shared": "3.2.37" + } + }, + "vue-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "requires": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "dev": true, + "requires": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-loader": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.0.tgz", + "integrity": "sha512-OWSXjrzIvbF2LtOUmxT3HYgwwubbfFelN8PAP9R9dwpIkj48TVioHhWWSx7W7fk+iF5cgg3CBJRxwTdtLU4Ecg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "vue-router": { + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.16.tgz", + "integrity": "sha512-JcO7cb8QJLBWE+DfxGUL3xUDOae/8nhM1KVdnudadTAORbuxIC/xAydC5Zr/VLHUDQi1ppuTF5/rjBGzgzrJNA==", + "requires": { + "@vue/devtools-api": "^6.0.0" + } + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + } + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "webpack": { + "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "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.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.2.tgz", + "integrity": "sha512-H95Ns95dP24ZsEzO6G9iT+PNw4Q7ltll1GfJHV4fKphuHWgKFzGHWi4alTlTnpk1SPPk41X+l2RB7rLfIhnB9Q==", + "dev": true, + "requires": { + "@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.1", + "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": "^1.6.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", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "ws": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", + "dev": true, + "requires": {} + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "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==", + "dev": true + }, + "webpack-virtual-modules": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz", + "integrity": "sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==", + "dev": true + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "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==", + "dev": true + }, + "whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + } + } + }, + "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 + }, + "ws": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", + "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "dev": true, + "requires": {} + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "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" + } + }, + "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==", + "dev": true + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + } + } +} diff --git a/leaktopus_frontend/package.json b/leaktopus_frontend/package.json new file mode 100644 index 0000000..592f05d --- /dev/null +++ b/leaktopus_frontend/package.json @@ -0,0 +1,58 @@ +{ + "name": "leaktopus-frontend", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "@babel/polyfill": "^7.11.5", + "@fortawesome/fontawesome-svg-core": "^6.1.1", + "@fortawesome/free-brands-svg-icons": "^6.1.1", + "@fortawesome/free-regular-svg-icons": "^6.1.1", + "@fortawesome/free-solid-svg-icons": "^6.1.1", + "@fortawesome/vue-fontawesome": "^3.0.1", + "@popperjs/core": "^2.11.5", + "axios": "^0.27.2", + "bootstrap": "^5.1.3", + "core-js": "^3.8.3", + "mutationobserver-shim": "^0.3.7", + "popper.js": "^1.16.1", + "vue": "^3.2.37", + "vue-router": "^4.0.3" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "eslint": "^7.32.0", + "eslint-plugin-vue": "^8.0.3", + "sass": "^1.26.11", + "sass-loader": "^10.0.2" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/vue3-essential", + "eslint:recommended" + ], + "parserOptions": { + "parser": "@babel/eslint-parser" + }, + "rules": {} + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead", + "not ie 11" + ] +} diff --git a/leaktopus_frontend/public/assets/logo.png b/leaktopus_frontend/public/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8838ec336810301d773396b58d5836e05899420d GIT binary patch literal 39591 zcmeEtXH-*B)Add09Z^7ihru`>Yk0YX!LXoH;Xl_UxJS>W;oP6FoOQ002w~_$@;KfSQy4 z(Ncrov^u6uf&W3g4Yh9q<^8`&{E+ zpD*n_vj6#YR%i^}mv(2yYYYGV8v$n1>~L1ve}5k7f?wFZlji*QD_EhPl_bXhJny-N z9ry(|MNGqg|K?>xveW-rCimHw5yR&neS7imH9XhgEmfuX@2bD2fnRiK*h&6(Yrkyg zx&E^T+VC#QU$%18+}{8F8&(>Lf&V^__L?XwO^NjPG=_h#n-<)8AoYK@^*>Ym=S2Qz zivO8{947w@kpDo||4i{eQ~WQ3{5zlie~Qgo#c?JF%GZE~ zfC2hzI^XFt5zbjKkt%=_)04JSU{4Jd2JCt7@1I4@y6tR904MuYsGP$##7T&AV%$&A zDU-otami1;p2!mZfD$%-cOv&FlONjvxUvwY=Gz8TOQVYFPDD_4y#p-0ZL<`ce88;8 zes@uv03S$EE{lL5hioW)YfM`sEP%^7yGT`Ow?9sYy&Y{N=SSmwkygcamU@#3u%X$M zJ5|8(v&d!s1vy5qo&fWRSB1MHCp3!|uB?R0f>^R)%K=GKlmPW?C<%%&$*BSz0u7+v_*WC(9g_eWf?WVK z1Qmypk);(B&8t#NgK~k^E2G@ZQoAlXp2z|lG@I6^NPHcaFt`CE9NYk#q;o+{BPA@W zYW0p4KQyQDxOHRM1$4S#rl9y$jTSS|&g&=P_i z3V&al<9)0p7mjs@G}B-wS3MGZ1VUhxH*If#8@>PiMQ^291`4*AF~NY<16G*{uo6A{ zWycLn5kIgg3b+gIujFSu5IqM)>Vu0xOL-L3se+4P!uA1E%~J;!No_W><<${{%fC-{ zPd^=up62+wXT}`o04IQLukPBZ=EkonmTfiHt#V<1y(SUIgmqxrncPU_bs z50y~0ZxT zwPW2lXyL~8!b3wDDSFO>RP;ofOs*qY&(lE={Rm$gpiV;N(iZRAExCQ<OI7OV`)p*)N|mhmN+Jo{bA<=H`VvMj-(g5EYNf=cf<4T_0U= zqm>&NtY)zQ3)CZ*YtZA{Q1_>=SJ$VDhQ7Ph)1ob(Ea8Fj`&A1zXRxJ%P63O5-U7^G z%VTBaRWOoQA-L+p4n_CV5Z31}ey^K$6!gnhuT4>#YBGj}$X<~VhUUNgly%u@Xg4m7 z<8<~-q>M*tI_TzE1|3_vTkMlTp-KOd>mT(iXc)n7TFsRIF5nH@Z*)MaYe&>l_ z=jhxiJur5~@DryAzOEAwFjo8*E%Nlce-c0H3#sV+@&0297ziw9^^v!6juzYobSTZz z4JzU>o$qo1Vmo?ia8DGapg5<1=$^X8k){#o$9s8Wo3|goF=aWJ6bC3iCq@;FBV41f z;%qM?YG0RRD;d1d*!S9&{L<0Oep0keK@bD1S9sx`#RV?{PW*bei1k;*-cHxq=jDuG zgO}T5Q+l_^bsRS$@ z29;>=_(Kk`X^ZC1LLa9wg(nMwXyA~dd^U?3f-r+@DgvoFks&~iPr;K#d7XC$NwiXF z_YnQCuoCpb+(RSoRw=kDOa)`~o~K&k1{jVym%T;D(^0T))A5fJ)wOGet9vFQ_b{?P z+Ba><_);+st5u-#=;=x`{&l$esG%P`jGON$K$zgOy)8$n)3vUNRLU3$e6y;n*7U_R zrb>f!IR`*2UKWWssz~%HXSV?%>GY`dT&lX?aGb74R>SI}X?E;BPsQMMozHkpgfha7 z{KRKqVCA_wmm)`*8cVq8cId}PnG&f8fBL}MFf z7t8Ov?tnEtp$KMW9yossKi>NzCE`;BBLNd5F!tDYHGL~w$!|?NW>qrjt=F3n8$iM3 z>j+~jGa(x`+jd7oW{fqBTusYTXRmWap)h>C30W(+S~mWVsx;U^MB{Uu4r2U)=USV`UId&-oux2D&fwfH58VW5p1FMhLSO`N*VyB|OuC)oxC&BKt`-WikoZ|C9 zw(Nuwwokj65Q=nP0_uJG5|L{4*Z=ZQKm3$LoKr76zbU;!wQw!kF67)wV=&B2va2j< z@z0N3mj{hw0Sul8tlcp6$Lv|79Dto&AQ_%#YWuzgvBvvEuzjBtkND(Ylub!!kT}R+ z57zVllN<)i8MUXsfalwF_z zFp_2_W|zSg?q#>e1^j(7wCrxR!i24cA9PLXAaFNBqpO-cTNCt87DZN0knoeI7`x1g z%AP*Wjf*pRQ+VEq)HpjE;zS1Q_y}~beDd;^=Ld+fzh_J{)Z_X2pbz4L;|tdq=K?? z>lwwKI_enSC_1a7gJV852Kw2q8}mjiO}E!E$|e03tb9aH=@YLVnj=8sVDaj#XE7?5 zBnRvY?$6{#a@2+>Jybi7&Ew{iih;b?dZZM({u9;%VKa7C+>PF z?>F552ePHc^KDvQAsaoFx>S0x<0`4igNllIJ366|j2w(CB!CLV(f=DO@>XXnPU+0= z;tTsJa(+QEG(hE9tBiYLd7XRVM!xY!OU9-WTAH@@;NoIjZ^&f+rGzOpypI^$Q2pLG z=W`^wu9%gKWNQ>rK{NpYTjzeyFj>A|=;Je}8xZH`;?VBJ>4dm0r6vjfnoO5Ohkg}r z%VdP4eTvouUE^1&iPl5}h$NIP99Vs|boX&sU?@EkLegz3omz#PBGulp&&q#8A7&$8 zeL;KT?l@H_2f#_VAQbD_y>_N{P*hKi_{Y5e;R&a09RMRzd>Z4-o!1Xa{`te;GHi0Vlmoe)0B|lw7!A7%!4Z zG||Emnm^RH1xz^;E~~Gm2g2GEzW0Atkh(G8S8A#LD0zN<{;he#7mS5eBSr!eAc$gM z2^KiAR8lJPrx*S|ybN5Akcj-()4%MCH@s{&woF6n-d|Ni;Li9KwrZr7W*IS0T~^w9;nVHV5{8Po#uWYoOcrwK z`Cl~-*e>d$+(oC`DwqJtgB2@@LTmHo^BHoHp5>zIdVXCMIa#H1N(isNCsB}qO_c75 zdXQQg#{F39rfn|SpO)r(3CQ;Qsl@Y!>s@k7Pc%tstj8Ov`PX?YwZ3v~2=kovD1IGc z_R)M>3l6jTv>Ign2ph5WyDD)NDVo4)4hQjy!)sh-iPY6BjH-jyYZwUikF8DKY32G< zMW;DxC$@}`JRMA2DVFnoB_Q_wTffu2ee~1y#}s_qQb4^R?u$d&gv}88n*zuQFB6OP zH1Wg0UQk{2tKEd0lyqSZ=Mg}*N%o&Pw# zJtL(GLClnq)=~Zy2QOWE_UZSc4z5}Ml}Go}W2L1uk?$_66eG60{YXgk(Fv^6)I%^kHOFY^;lj7G__;5vf2(z0Ox6{{>f{~gx_;omUFc>k$wEN2BMpg zL=mzdxlBjL%S51uopM|i1O4@x2$#p~!8`Yhb)g*!EMp(QGw0qR*?XY-DF|6Wuw7+b zy?wu$VWgd%5BkE2Rk*sxpra;KN-!{L^Ind|C8v4HPfvI3ea@kH;*a$HVQ3?Ac>aDl zc*6!duQz%xYhb#gYZfx4cB4BZG0`XM7xu44rs!GPRc(?k%y@xdH;3uVpbq5amt_661bAW6x;Mj~mb4h{Y!o z>p!(LL1RP3p!~kBJP5Jc7}wQR8z^c;CA)+M!w-x_5dELl=q0kIaf4~xNRy`{gcd%* zhn<9E=4wAxagf9w9$s)WD}IHUga(Z3=mmu)`nt7rEQ}sM+`hcbE3$Viqo%d`rQNTp z^+%pt`g5!?nLE;toL|$_z+V7jDLsB)Sj*yHEH9!{c$|yH z4Y|tNAyJqTO-3Sm=0o?bEX4o=bZaLUU3deikIU_fdgRoxdWAK&s5sI3jUKY_hS;7(6+Fgx~z_)s1`8#PF`szEYX z(~~N^ji{4i=her1M#gsd&_@mUxpMBXKGFh99oZ!5p=1<{|7~+^_s4f}kSB1w@0L(9 zC2X1kJ18-nC(j3s6Wss4oMx?G;t)0IdC#hY=19qN=ZpQ7MemQa)vqIJX-jIJ+a(dJ zF1KD8lY2Ma1jK%X3%EorzE9#g(1%W{Xk^3|_cmFk5#tK%LY2x=7_PdnCrGS}cH+ER z>)^EC$ToTVOWz3$47|vzN2A7!-6z*LiF;s^aWYzbl}C}<&dunN;l z5nvW~PV!{RLsF*A_SQ{XM{=>m=&LN=KYSY!Oo=k0@;M`RcH1wE?WJF?U$f?l?wbA? zkDge)Jas;3>;CT=CYzkt{rTGaXx2k?Bm>s}jEb2VSn^B8yyt;xf)1T(zLv$aBNl?94 zc@`aX9fXAgPh?3frH&VJlzJ-H&Io*i;M@CleC_Ou;!S31^?mOUejlkdQfe4bEWpxl z`;f-f=Z73#Fv_NBOC?5i>|}wR@21 zTJpl6;HDI?sAqX6tX@QPryEJ>tRwIfI^qnI~w!ODzCVF7h`s zHqVE8K_cX4|3Yv5u$ghY7QwXkgphMvaO?uVmCd{Ll6oV?~$UobXM-M)>Gh8zrD|MSl7hQ z_c1(lfN%RqF|Ed9QVs}AkBH_>3 zJxbhk_w{do;wpzEgFU;UKVpq)66eE&1;4)mJ<{=_-G^1n@uCCEZXd?hs#boSS=2AE zR1Nk$E(G-Dr|w_=_7eL7egIdHiAP~HAwDrK-UrlCqI>=R)_Uzdzli(8 zIJyBR-hlDXe$*RM5Qu-@&#?apL+g|0kVqWJHG?jtL+A2gyYAQCq|re@c}ny98x$sr zLJ^bKZkf7H>xyoKZ3wK(Bc$5+*&&O;-aXVC3tH4{@kCqyC?3m}yrQS^!H(VXcUi)H z!9>y%@#8rPvjPOD0JGL5?4#$Jp0J$^|4J_vTb=?84IjxAOFLVpW3uMp6rd@}2@J9- zzE^h#4DX!e@lD*415H2Al?I|Ws1Qm;N^&JzajxpXvQh-`FEzYu#q+=Y%(z&?>R+=Fw_G2+1GwhE`T=2|+X~zsId?R%>&1m*#Byo>Fl%has3nTYRG) z@1^t)!w<@2@bMZAYJ1VK-8D?wtVT?lHfF-7b$k#T{W?gOtI=?dr9mRKVd&ZzJixl-nG(xR0-U#&dmG7d( zd|&BUBi-JyCI$k&_P?&cV&xpWZf%shN+mQmA5`D~X!6=Jq z!IPvnO48N9`vIA4&Kbe&IDE4;Ewy{XAnX1s3yO( z;kq9Eqa2l*SHJ1ObXog3de-5$h{jOempjJE+fRU}e_gX3=Y%}2 z;gGQ|@Lq*zjWnq>q;<|-|zT`*~yyn3(mIQA(8!<11i1=#TjQ#bnA<=Z)HIL znrU21YI?Ol&bsM2^cWPP<)_P@NTDTZ2@DHXi1s2L%b8xOYYD7l)s+wi8cHvGoQ4h zkANR+zZ>-8#%Ex7lo8(hzx7h$-kzMORjxtm)iPH`7V9*!q0SZZ(R*30?Fzm{GRWRf zyug0R%UCh5_8##GSZq{rZNMNd5DT z#=xhHDOlze_gQqS*CqN8bWeF31gq4`CSgYBIy?lfdg8TzS_O>%?&@?dZW^Ip0{RIL zYy37hpx|yRF50C@h=5f{Xa6kig2U9#V2@S4{rv&spSf|pSmG9#66mk^r55RUwUpQS zJ=#()q=V~3GJoMN(jhrKE0L4ol${gU^hK-0*j+4>Aq-wxKp)))y(%48l)|z!Jr+{r#>F66yXX12cJNG`cFDQU-F7V{H zITd;~Ye#W#_75n4p250z*j=K_j3ct7csVj$y@W`m+4KZXE4=C(_V3X-n~)EnN5|}& z5xy0$w#jWQAPJ!3Hb6K3=g@?*q&KHtPvXAhOUxpmSm|{xw!QHjPRjJRwi}LI50a?L zv$8Qp6du;86Ij35^agvj*CTA%vDq-1o2S9bBX++1l$myyY(~5-pOc_lzQCjj^PDiO z;(ifNtq8d?z;V|51)(oM2noptk^#RhWVKDeXX}9Ma%+3H&|ckf5eXi0@IL=&6D9)^ z;1-p;iX_E=0pExLJ^sq_XTP_mxUrKfKw**Vt|9u+?6;QNYw#y}XV#DOnux~M4;R{) z{isH`0h@$r!Mb_j65u7xeFPIe^*v4j<{utMuC90b=Z^^fw zMRcFu($aWmhds>ciC!|$zPio$;GcT=k$GeCwj?lG&KpHpEVAq>A9B^4D{7}mO(r>2}7`~ZwfMOpr%hv=mjJVl`yFZ%^~?uhEm9! zL&W0y#4@~55G5?Jlch1BRB_bK#>EAe3Xq`o1SW|NE-k_?%q8x9G$M(nGuB zo0l$Xp>JfqL}C0vDO4oA12I!~E#I$5U>73eKF6d{ zvX325s{je3ARNKM+8(BHI5+aS%U>CqG7YE<{K&Qc3#rVHvI8=kAAV?EUQrwwN-0Iv zUKR(HS_ct{MZx8*6U_?a>uJOX$&Gh2&O#8Ql$$e3zBx|{H3=gy8#TVcj}xF#oS^j< z`7L$vQzhi>Ymm2p`Qh3*SVPZYl=x2AJ--U{mnycgX7Jq3Vn1&EzJ9F#LZgSMOXXsb zH}5`x(>A#GVEm&wr{Mk?{q%>+WSm1*zN|HhC+9fR-%h*5Y(wXVVEgBHx9!d&yRN38 z;u7_dB&moio!B8dcn}9FLR=+C5T{}SMpQdF);Fn2`C2i2kYIL=zVuUiRIiWyZZXGZ z<_;``9_z5E`o?EA61$7YZi^{0e=8qe6}@8x6n7vqDoPJ6~PEy_9(ap_D|D zWGN;Jmw9R7L42r*tZtQr;GevaZzY|`N(AGBfjkLBA=RcZ;8eUcJ3Q+z@c8)avorDA zM!-zjo6C}r4d={kjLX<<4$zBxA$#`o@m3j|?_nX;SF8R7TIG63{4_*0&nvw`AaGJ= z`a=vztVb!}pOzBJkljCnpJN7#ZgIq;V1?~PR&6|qs$P)7w}NJ1vM`}@J~OOykGGr3 zveN6Q|JtgIasn0Dc4Y>vYfzd4@u%8^b{IdWKr})F9|JV!du{UzG-!ii%n=WUF_mS_ zgdmc{zi}wOGi!k7Y8PhEd1vXkDgD6Slg=`en9AwDSEA;HIAy_(LM-c_J>SaOPx~&_ zo*+VQh|qERy6K>2XbGapM$PiLU1QKQFqFzEH@TNDoBEkw7Y$rb&N@cxTH+yq^&O?G zLUgkM`ORbip|Yr)_?a@zNK-Ou$#cSuicZ+(F|iM)gL{Q$MM-U*GYwoC5Dp}WQR7wYXZFY^B4&IFqheSaXl@!3!v5jHZ2!_ z_#g1<5)NRq(qlS|-?C7!u)hbg^;%DmBzC#iKki)y@t(t_rC7`2*`(E-Z74g_2|&n% zof_xzBvT0p;2cy8ogE+}&e4J=9N2NhiQUJ@tRLmtVD~4ejRh-xFA=7oEq3Pq_t|c8 z^Lo;C3>~aDHu}PaI1bw|1>v+)Kw$X~aN+9Qj}v}?vn50p`Xz_tz_uu;1D`wp6=WGH6h8K@1{3NVj zazh)QXOkTE8n$_x4U%)KW59vIJDa|Lq5+YXJEo?GRGY-8UHxl zfhf#VXu$pXq$)luI_JB?uxS?T1Ece8{%U-(M62&JLd&{9aQiRbmKfb9W3T{AbeyJ@ zQ+X|~7Kt#TW#DmR!rGVvMUG-~OuC?sve~79JJkgSf`PN#O+W6rLeVo+gozj@Pb>7N$y>_2 zxjxGSO)e^oO59UbvWP-T!Z{W>8+7g55fo8a@$#|~1W`eCXHHS+=hi(VWhbQzFVm&w z=F^tZ12^$%fNG0ZdaBU=J_w3eu0jxXfJZ>bCB7b1hPtSX{E>sO<*+%Jih>dSeCvIR@J2`G#N#U4CQvVg5kZ226}JU8^Pa4j7c zk~wM&+YhKro(_TQOVqb5H`|pmg~xV3*L%|Ti7T*lTLc_%mTEXtn@DtNk=uXXs!4h# z%pDXdLje_8OhPVNez@UJX1UaU`t~>R637Qjf(v0*UUYI&D#DM=0GsnN_4pCoy@B~> zV@$4{U!JjElsaSmG*vbOHXyKEqmn>Hu8G4r2Q;O^YEBH5+&Yc3;Uoxq(A|47AUkte zreiAbbw}4Wj41n#UKBVThPh7{&FMHGV%5A!Be^7dbpKtBd(u#}<@w_U_Q4ZL9H031 zdzpve5o$Fn%4sInh@t#Pm!M-=_A8V3ldZJfvMF^kv%McS5J;>I{5UZd>B_s4hOe+M zdZNCrAwIoMRBl(~PT_C7h}gKOW%>rpqs|^Zk=*02h@&p&@?`bF2X{3{4(Fk_F9S3t z*F1uwtKAFlKcy;lFis$*@r(WC6^awueGUg`96iu>1=UGkFPU9uzqMx5&SvDe7pFw)ehK(0)bx&yCtYOt@ltnG>)SUXE6_&>R9?BvN zs5~lOz2=e7_1$&H*5iF5DV4iORvE;nj*87b!(`qOdDY2H2fxxRYx2YWm%6w>*|XOe z?-Z-j#O=(A;J!?Z%ds3M;wdD+$e=??IPfsrO-z2pqoz8c%nBar@KF1%c@PxcoEW_R z`jz@C;;{ti8#l?mQGZcRQ@kODx4zZw#fdOnz4)e-xUk3_9XHo|kM;&&r{hlb=vC}k z!m@;!@G@Sv?>2rI68x_4XJI05RY%Q(I&|I+3epQXS~yY& zZBmOuIs%GY)KksT#32UBL}JcHlB%8!^`;tn#!Wc^?nPKVq%Q5WgRA>!9QN_PErIUc zF_;|msgz_Pe8`^js+(uzd-7v z22j&rW_tN1UL(qfsdcA?38Au^Kt*n8wsW|;)uV$GSH{^pcKHkDDhj-+i{GDqaJ{X8 z_J3avVEdm}tR6Deir#hQObLT-1_CpWNoDzYBds32pf=jW8OWL8(r6>lV38A4&|ms)?{R(q6cLaOD}Svk6Kt+rj})Wr9p&8igq zNJdASq_s)JL_tzyaS{Jh3becX_1ET^@}Ln1MO8%(`F>RtaPO()FJH;JhnRWg0sM^t z_RfE+-F3X=S92`528-ID^6&>V*&^39NKIv8SFdIquE0m^aqFtC2z|y0h5FfsHx~?f zojGg&dV8ewN1PwQstEdhirpT#Hu7X_)3l-%Hu`)gb{?km1|uPT>)#Bt_NNXh;kzGu zN85E=x1iu2>hHvFpI1w89b2siED!(G!df~w-bzCd0~e)~6N65!;d=E9dp5eY zZ7=ih%?Zo?I)hNYj+&T`=#AfwdTbA7lfc5c3&0Zs1CY!@-}Yb3?QJVe zN29Qe4MsWfo6|hoV4v#!b9dqEiA1M@DYI|xH#E>TtuyA3&fDz+@zG4|7_9;}8W(#8 zLs?#gI<@DI?}%StBK3_^_eu~L?jvjTtPDRhmaEO|#=35mD2s($G;_Bo&$uc-Zi3i! zw%g>{z_HArLRse*buA1b`l{p$V~a_jTbee_xo{Gb$A;)=FpEtBF&@bgP4kFO%d)x> zd9`mo{npoDaaZJ$lk6?(9y_?-SPkySJwh;FVW<%p%$mKb^5ySzD$!^`0lz&J1tNv|(881!nxX%I z0}p%a{9p!=C3UzVVg+F5Agk4@-qZG>eO{#qQo`?E>Z)J{oS;(c$z%&`c71DhqBvCl z;P3J={DPW?9zK{{z0eJfUMQw~VwGgL49Qck|AIW~kp<>qJl`67<_vZb&hV^~%(hNXVeP_J~_-ZFHt zAVktQ=}RI1C4`y9o3C8!{;>T#^)A>n71sN(#wuLCKhMwBuX>`?=TgM>Vb5gOQ?w6r z)7O7h0=4qGhykd_ozBXv*#!>pgx`WEj7-~$o_`-+dkL~=(imbUhQx+RSWSb?}-8 zceF~azG9P(xd=FS*U9d!9%=9QLqa3wwg~fxx#|0dyyV%{r|iY1o~Xl9vPc4UA%iuy zh9$B?b30}Kyg>W4$DY(78z~Auja4Vn{s|kn$vgL}{&x4PkYpl15_*@vcdBM6>YLMp z)8x&Andcar6Cpl2_yjxZ)Kv79Ka)X|>9t_ASLpRH=>DCzr`*PI8u%TZ_8Ej*=uIzO z-vQAW|7&fjKGcAF-;=IKDKLtAjL=p(|FS8sl~!|f=I?naK>z-aAWpPR5y%{9LG6;e zU1*5;26{_!f6N)(97U`ZyEMNm2D|fG_Ry_a^p(pdIES7YkMhp7Qqwox?Y@a0m5}Zy!_u&os#b++xTw{ePJ({NS6hnwt7zovLZiqCT`wHPp2m69IZM~t| zNnff@=|14V=>T4=i>S-5Xc*r){(Arzj2yNJs<#kMly{OXXtDB_5{&99(d#xcHKTGb zO~Gr8SHi{6KH{-oDWPad$h(3MfBE4DLi+X)vet{bEzUfW4+$=KSl=cbSU}&BYzB_< zY4cNhpp&D{0D@QfpikXWSlpDYB(qHrg){^oAvv#4xt-r!lwb9e3y?_J%vUeacaJt- z_p57GiRzbp9wHUPm7n6&s;7CKmiZ7i4JV=~JIE0mwxV|+rNc|8-wl#Uh3akzY4G%U z00d@a%|ZL$xr8lWFbX|-bL1NBM4YwQZkw0&k_Q$k35#Q#48kXwQu>MAHEHFp` zwF^;vP4tiaD}~$d_mjGA2C3Y-lkxbv8Po>4`H{5ciN4M!lWqt<1TU$YOL{8eR!aHG z4Vq5V(YG}h8kgKeLYhklF-249n6rY~TI7NKubhwE0?^qjjn3>HYDvTn@oiJne-!^d zTEGc2)~wQoif}x5f=(c=E*(NQ^@O{9Z*>`9wNEQ{y>F7V2YJgeMv8(Lfm5cbN|^?S zXhA+*QYA-Z%5Wqsm9J5+^XS4Y(jPK3$%351+Zr{oE}|5Jl5H?x8>RBT7ynfmgmem2 z;(^}bqrN5+1B%V5$5x8*#BT$VIW-ihYN&a1i?_ZM|CNR(_95hD zJr0HFMz3FRNR>y2v%E5-PBbG{RE1|`MaRG{nrM&vsKVX+M|)Z>k z*o6{=+u^jjLIk_zLO`)}_@mD&6CX#<#n&!ZXwbpdE_u;UDw>Uz{JhbMDkr$YkOz)< z0n#B3e2bprHGd{VDuhtdpZEpxvGq0wI3oyKq&;{R;mQ-?Iq@bc!PSuY7TT^O+wv_# z;UD9NPv~g(sDG(hi2S|WJ?J;JK9bfK7a}d(WG+@9j^pHZX5)9)CN0K{iY)x|y7JPs zZwN0&eZ8sAi*V(+r^M&XDem}|BI%^2gkV3040JHXcWoI3=Lb^qrrD^oZ2UvN$L^4o z&51PUCn^;b#^|_^-j!rnMY|j5Uc*qmL zrSGKGGov$oXZvjoFX>{~Uocbh8WK<>DgQ^+xy6`>-nB7~1=kKvPe0KjQ|i?ASeUnG zP%^@+EJZpeQMq^HklY!Go7A=N-Sc?LjyrZ#u21k6#U(F>sE+Ae&>+3K@&?hU1c-5} z1~NSTcm`^5#>2WSBQe;5K?a=}`X$y>Vmy)f)Pl=`S_SQFL+yTpRNH%X(IH!ttQc7# zVs|`?G7-O~kh|HK8lAROVqP5uci%pFvg830ov3o~QaUW+3aYD1i;|ar33E zHzf=r*^N&+bHa!N5(2{-Z{PaV48YwEr-yHu;-U_l&ECB~Wp?noppPF%33t!7sPw(mZ z1PBIS#dXJoX_csbRy1d*JV7_JuTFR+5+z|SG7y8R>T_*U+8(XW>c%IlNB3ZDazpX3 zQM&D*14la;rQ>aE|2J!xm6uC=lHIO>obp5~4MI#IhWFHP?>xX#j{0*8%|b5S|0Nbp zl#8_RXz0Cq6@qB}II>=~f(Sz9Wd!QAQo`0uWpH9VhgH{u=Q49_&Pi&MN;IRymVZt| zCC>kQ764%8a;CwGA*^%5v+}PB;sh_~$4Dcr;rM)CAz`uz^Ch}k{u+XxqVj3yoeF)D zCVLRF!Z4O5WSj80Tk}h|;E5r3(uxlL6A=6@U|lc*G0A!!j;&+x7v7%~^n+zVQG=9> zYU0~hK369k4afhvjI==1U2%vP)m!#J*QH~UW(QJ1^w}p>{IN8f^j- zeAIx5I8ET%g9#4>xA{?dfck8J8ZJFPLQe%v7MyuixoyMHQf{_RKlR{^mr$c7x-d>k zae+PykWc;dEF13n3GOG;Cn76^aGrdcvUl2EVOFY`*buFOd%tdI;T0(-*v2Y;^nGT5 z)=yw_TVgRrDW%Om0n)(=2$lMTGvrCgU!C`O(lPv|7p_>Lh`SuNI!65OVT-L^%%y@d zV-K#}n}~yW6bMp)`+lU0?Ox>My02-3c41fcA7oWZA^z25B<~o!67%!*esCr+nJh#7 zvsK*o$pvw8b*kXzX(lY}es0~6_`G-n1A)1r=pT9uy$(7~{fWYm{zMdbFX$RwQi@Mf z9G)h2LltI)^vusU_WMA$MV1rHxJRJ6>SRiU#>_$#H9PMN!11x2I?*uxdwWX{Uo!T~ zTzQ9hk}Y4NRHA3qE;Nt^P!Z#MDCb5ym89#i*edm{$?My@<5` zLP=`BPTu={-qI)0u;pwZd!%fbuBMHFaFgi?bE8HbgD*I*TuMnzgG72271}{E9k4Kd zJ$w3vW!9wmW&4b)B&@kmZ?nYt>%H@HfjCW+^N)G`B1V4y;Yc<&0+txGlzPkr*7TuU;BD4={}yej!B1)xC1c&Zy0(!N9#@d3llRvVBreT2I?7P&427$! z0p8Wrlx%POKkQxVTM1;s+)*Uyh^)9)FK@Km+a!e=sbv?yZ&d~5I}yTzokp}ez3lrH zoIY^7caOK@r_?%wL!BG#xbI|Rebs2+zJa`T6 z^>fU?xN-tM9}H`${*HuMHDer?hC{QoD*UnP2pgaCFb9P%`pIo@HGP%)>N;vFC|MSn z>@JJ5o1Pi|1)+4Xk zI?|8t*;Jbj{u1ARv8x92_=61$p#W@-9B_zzKVrvK|8;$835tw>$0jR}Ma>T9k`>(4 z%FDdM0MVbbV0`9eJdamUp4z~xjh!7Wb`_sudj0+?{29*`% zll{qCZ1W1RyTTm}!}%_&&qYg8I1#J{>$YnJmw$A&Z`l1}MaQiUdfb~J&&79(FC;!3 zV2@uY1NEsHi90{qV6!)iaT6+vHyk@Xw8~_@w@*Z2D$;k^5K)WO+?I8I8Ek1 z5?u}wQFq4&&)g<8{u4*QRA6&r(tidZxaiE`)HNJn1Cz2caKbl&p6Pzh7O_f z()zcM5e;mc{X-NklB#g!%GF1I`8MAvUPkCY`<>UL&PG$B{*3@;+TRpPZjRuE-;q`G z-E{PhX*7ge{$<<26~M-Duh;Q7wPZ7Pt0&4O z=f(XgdG*HDc?>KcohkIQo5KI&6L2|6S+~)>x;rrxA&Q7@kFrvDqXMeX7zj|uH5r2{ zNi4aFITPwOiUzOBM$;dwpo2YM%;1aRja-0@#fGqx(6U`)zYuO}cVlWZj44}#6n-{S zVwNrVEUBtIo^eC^ro7-E`m;t-qHWUL0IK4@RZ+EpvCv{?#=` z(oCSaSZBqy>L zuZ3Q@F@kyhC*flvx3(5}i2Nm|liMS-^DLZS6R#9+Y6`O|IH$SZK_FUrvo<86qrNJY z9B>%=X>I656Lm-yYdVXxzpLLNCl)Tj6k4uaTxOzpl5&uCuq`KTW3k1zWNQ_N=@0}T z)53-=lK}Q2m$%3bivO~P*2ZA-7biVAy~qh>tbv4i7W{>MMH>wwbn+CQqmImQK?k2| zt%)c}G|7hU`Vy!aujpy(fY&D6r-*MGz=S86 zNrQs6fWYpj@s0(K5AI}j(7b+*=*-5wxrDya~Gdl zHt5YOi*3#x^%k*xMpo5pyekv4)jY7D<^1mx~if$>{SQUh_^t{$U?3_Gb+qm`x zWR>^3Bb4yxHngg5PPn8I5272Y=+v1Rw06~WEJjBY6jr!DXQo_2lq>Cw(;v>Tk>cA5&)?71bB^`ym7o0Tls>5s?9;MWkCKh8Xu8W)-{~7&)&~|^79?qLY7PO>>zs%X%JhK z-JEp<2GM(!1}u-S6JE}zssVjiWhAL3tsBy#}KgSHyu5pIQp z#4#PE9;&d>V?|#{=F?DwuTr!VmohmpzWI~r;8qA~v>Ns;wf&9%t0+3JwgtBdCg?BA z!ri3sI6?QKoUsLIr>!ryM1d|2NB8*WCo1Of_!|ii3$^4@eKLufLp)rO~up;``IUf9W-s8j&oJ|P!oUg-A|QsTSL#K!uvIG z{wvhL_%vI{wHJbv7I+L`*<-l}r}l)O`nHOregvM~OZGbbNP52-o2n=KKP^s|ul9lT zxnWrvP@D733+*3M_Ql^f1aTAYxg!Fm7QLFGPPK_*Zl4`IFrSvUYQHymaAM8Q<@=aQ zE|`yO8w_d37!r=|gQBpcA9 z;=amB?g)Lwa(JaF3%^*0tdp6+g^`&7G}`6A-Ebk%xLmc4_y2#gjcDGUqQej9jL=x; ztO9O^GFD?5$kMD0lNH)~O+IoXA~^=RE*qRs47R#sQYH$x3$7C= zp=goXoxCJuI~`B~**{V^r0ZC=yk>YEBE-G?3<7?bnSU~}1#O()2M$Ub(M4o=L~~Lu zoLWq8Ou&H2TGYcRsH}r z)}k=`M`!22AZ7JY&ckmBHD*)wQLsCEeRN*+0ifOw?kR&Td)HxU^qe(_B*D=;>OMtQi1 z!l)W>p#k61m)5X z5n?14YM|=ytMU_(^Ni%X&^qHTv@Vkxy$>1nm%NG1-3mfh%O6nvfM>fk=+y!m*zCu%#yq+O% zFcNrz_XAC{uc~74G(}oUy|oy1u+56j7WTXO?#`Nxq`h^b&_??e?|}q~EpU={9Fs4y zg`0mS)13~{thZLPanVuyacshE`8mg0mR@lK$BZ63i(iu}c1Y*H zz#a5*@Y@k)?y6b$6nWW80f9`@{vs-@I47%~U>Hk#nJG3iwG zX?$d38@_Wkrase7B`w!AS804diY$m$zdJ3t(jeDH3ZSzQ0)An{Bo_6a^hJaHlM&Td zr)6r5C%5__(x_{PqAx{6&v!fN?#~O=Ttpu2C?8n!)mnI#G_E)T(=SvkTTelx_Z;V* zi-_?FqAUKzmgVXtcs9|9jGaG$?xt#mL3;dKYZcA|6b6_!QtH_`!DFku5VhHlQt636 z-l_7#N=L(q;N}h_qefCKrS}7q(4~8Us5t2PyCDI*Vjvy)c`T~bW-2uxC#L~td_!Ps zyh0PWmhrRF^2~~E(;a@g+0V57B8FlL6%R@4Y@5E%DvkFHlp1Ut?{XmYb0_)m^$34C zc>3zN;}kDqdp`?zK~DbGjc$C&=Uu;NJ;)%_5wcQ4X;#F}_ZN7a>KTM@vtv&dcB$4uc7Fkm1g~_Cv%^g z+@qHS=pPFc-!}5dtI=FBKrSJBqV|FaU(?Y-9$jYm>|2inh^1dy|M;;q0;oJQA$(~^ zo6Kq!O^pi@wa-1XNxewvVM7hwFaNiKH1&w-oUQ8csWQTrk?Nh8{kh*)vtz!)DAF-n zd5kMLVV{sA-7-cYUFsm+FEXL}VJiiHajF*jc7;~8rPWc9Ab_w%g+0U$9`BABkQoYl zUbk5@NAW}+1%kNFp?YKQkYK48Rvy*PT$1mh1nphAqwg@ZlH`CBmDC={!}jNf{FOj_TK ztzAI(y#j~#2T1T*eW^F=54c{{nJ;as2MhsM70>UQ!Le=JL6m+#bd9-=kN$GT)g;^> z?OSa`WTN=DwYk7-Im;?h~ZpuQpSxUvaN8)+8>ud|484A z<#YJcK3J*;y6I0Xq-9u`Jl53*#Lb%4fXO$#_T>=M+W7F|k{#layk$J>#R9ll!V5pz zDj_U_uKiWe%8#0BP!hfC*3M2rD=%zOokQg;kYs%PR|#?+S)=HcR26q6(+^_ulKUqT z5x1-b8E8ya?Esf32XC;DjI=p47gy>exwoETex7{n*B&2^T^`^sn67s+q6JThMdf;A zc}GB!SR1Vz@NVIP|8%f>e>DrNU!l~av9E7nO{U;&`=3BLfg!cr9f|pwwm1vD@btES zxp5Cf`tw;kyF8}$uD|JSiV#BlpU6X~_`8Guh9F+Ns1_Dh<-=2iA)ztn&&y!YNovnY zEu^jH0$ZbrmK)lKkjo&p2paw8A<54~xlxlSz1;Ej_#mH_AVp`o;cC1Xu)|7yaiQ<8 zgyrV+p6Vw)rCFB*s2`TbRou6nKrvcOG3DCdU|=K->Mds`9qalm@W)H^DC|S1 zsv&&I`w2>CyhgOt0gC>-b2d^VoY)k5^=|G9{SXXcI+m)4Wd59`7M9Pjq%h47#J@EQ zg1qbqUxM4bUeY?2N%QH}p=~ohDEbPR&q`#J7jF0CdbuIXL|RgNYXH?uxQaRA2aT7# z_I-g`Q$Aa43fV$wO#H}IO}pn8%zc@H=h>eNBe*iOkR1}r%;!P?Y_vbD9@P@4q!X<4 z&<)6NrtX>&Yp>)y+~DpB^1 z8?MZCwx1dpf>f!{4!5m9U$?zfC43_s%3ti?rtwaCj?PzBql5L8o2!D@Cop{Yp6l0) zdIBhYoc$}Nu0V1r(gdHF?X(>!#Q5fpG+_nwGP#FP!TV`osIn6*7;&lK>^zMjouWK! zgh0n5XSRikTcBrV2tE-53`G&AY#VA0!duwKIPIVDPG1t#*V9&-NfH#wW2 zZ|L&9yWsaF?&L3;eAgn=($DO_E*;^*(b(F=*-Bx^PsD zs^1JF%5CMj>POFxCqi($KBu5)wa^;_OuAV=&p~5H;<7#*{YIR`i!5*pEi9J;S$pOk z>JX)Ds>+3WU%7gKlKrbEq;2`5y6<0>89G>Ayfs9NjIgh(65J+86}$Ybq(*NH;K6-b z_a&&hH|qIJhuKcEBWA?x_~DTztjH!!H-tyew+*3Z*v%fAcEmY;Zq`dpy9S zT+OdqSLgnuUq&T!yAeW-QBdahqXt@(Mg_5&`L*_ioR|=CsbW55D($UDRTy^0IoF|4R`7 z%JPSXLC>!hg{cDRwfNH%OFD#g+6gJZrKwvXHsB|p?#jFH%Q#mdP+V$A7%R=#1^g-d z(Ot1DtwYmD)Ij{G$(2X2$~OtkKb&R~RTj3dk|J2kHGer6Q$eEP-2Y}R$0>@$A`FmEPpEd&zRU&{0jm6YkoRQdl^-` z*|KE9r?fyfLAQ_@@oRDSsV}*3`+j}MXyX1EGitLLib&m<(#aBt+XSumf-9g`hRT(- znY%=`&;u&vt$9;=@Z|Z~T5iz5;^|8E*FF~PSbf{paSQb%qt>*ybQ=Y#1HM{4%GntC z!P099degx@2?dCcdfEPptVu` zp+1}u{jBuy>12myTLa>Kb4U~9%Jx&8Z`PQ913k1-__7YN>#i(JIaU4VFfnf1X{7Rb zPL8}`1z9uFUh9~r!Z4*T_9*tR)%&4RkoesEyI+Ye&I!1;2JV#5){ovbXcCnPV?sn+ z>h+SY{J}~RRKVvhnOI|rSk4*m)7o^9tL*EFQ>aQQwu`|lxlmP%lX}XiH(QPQdz1w! z@WQKIsWyQV1GgvTk<)s4%l3uwbj;OdNdX&5Cao@tNa%YmIT)=35i*_@vEn<>M)1|) z-oh0Tlj*+XOQRJWD}4jh=wgq5V;iTIkb(brCy{P6`NZ1124JcY%Vy~*dFSNkYw~cW zmcwYi`kBGPBc&DC3be6PS;6@S(OgJLY;w<2JBir|*N7PE_Cr|D_f(Ev~z^9D$&L;M zhW6D9BQH~Uplh%7e?kvxYnhlVu=Wtn_l=K=eUoj!X4M8PtSEu)+TO5r_8~H`Flv{dyL{5K9Gh=y9mZSNd;hOf zxo^sloqZy5;&DN4F`lQ9)@q(%!4W;8d1*bZhhcjQ;^!A&jg)@5m$qu+<_)*wOU{kJ zb6i{ycYlqlt9knZCGrXbo$U389vnqt4IZ{@v2BTl=DIjU*)xS*sMR`_3iq&`fU6+^ zVf#tRUMEmQO;73JRPQd;T~78>5ZPoJB!IC=LnbAINyvQ>!x{Qt?Qih%_LWhU1r)aj zdDUz}nie7NEO|)5Msr4o>eGxDk$Mcp_zAA?A7h{gjhuFgk~0}+s~;3wk}F4X22!@5 z&U+3TKQhBBS^}5T*m|+LkD;(qv5|-y1;}*?@c1dXp2})@(L%rLhnpscgHbM}PIf5pyV@a5P`7rihcur0t!)*9+Oiv`IpH_n1V0^Ll z0+-Y7|Mmiu2}93TyCGt@?Q^59<;uzV5!AGH@o8xVJA-8&h5=)5xS(im&z@f4afs0S zoqlpR7F3hC_@`;MmTwYdWxQjS=;j6i|FFr7<zHtx8ZH!ZMm z0GEHRD;BHz0WsQ=;{MKkeJOL+J8TrKH{=g39&5MVImWjeY5)EHP#$ys*KRe zGo%NiwrW*BKT@_WC8J#>orZaOsw8V zn?yXI{zl)}9gLY(s{Pkwt4b?o-=`?7A#yUKIfNxGF|mDuV>)>Rbeg!D$K%?$?`Y`$T+?U*OsEdNFgTcj1HJrgE9 z{GQ1_&OT}<6Sx5=Ve zBi!;*W#n`9-HLwx7aO@CL-nk=6&_*c6)ScwkFepGWzz>eM%(`h#jc(KJN)(wxRrJ8 zo0+mg4rl1A4J4@1zulW^a|Apo#MJYM$0xX1lzqHRts>mCa>~6;c1Q}Nta-z{J?QS1 z>w_|uKR8@jvt>UlEnSLl#k?sbHEB2{+>4JIC^BW<#hs_5FnZuCaw=|cVV!&nGw&l! zSsJlX{ckpISrl2B6_V&Kdxz7){~2Mcis&NZRMj@sV%cygX|gb9=@ZuGLlud^=&4(A z+C@OV-*WMK>s;iw+s_Ho-AYazzMCEH7$%1;n)ub|hk+Lb4o=bjTAUU_Cj~AovptjHf6|aMvkH;-n^T6n< z65JYc7f!?Tgmm2zJxXomF&#!yhb*IS&0RdlZ=d2$ zE`-lzdP^0REiU>G>mFRnK*v_yMN4;5m*k>{(W7gZfr-m0NruygZOuFiaiOq*DkkBjv@^>FVp3 z2#=pw4+}rPjT~zaE46E>VOT%Z&6H&*16(u7c=ho7+N9y}+*gC@hPft>hEbt0N!ml- z9l4>V;)?%=c5yIWNBF)!S?YCI3{a`$zp?)48m^hxCY9kMl_p%;C$&DR)v4(HvVcyw zhu_q-e9wr)3#mKwrOydU#gSH)qbU5S{Sl3fGOK>0QY9P=g>Aj*j6Eljx2Jm5y0qs_ zFliK(8@)hK@x*@qFEOFRaHdB)nU&I|8IIxZ;IXoqfrwlvsi5Fhe+>nt1`NTyqpj|q zeqJ>r*EX7=d`R^RHfa3wH|&tUYW>-Jxr^F7INY{Ev{F;+IRR%*(-%je zv=<;sQo3F`2bZ$3z;VRWvspB2eV62wiCapGy)*W$6try9 z^Y3EuuDiC#q$IRp_7np_PPDyc-rz7FuiO2eE;BS>!xCrq3&mCV0V6demzwkaj>UJv zKSU^gM*@pig$@}gDru@cNEaeMvXAaLe~4&%cCQ;0$sgjx(IUAEl4t(+p00#XXZ2~~}cb~a_J9yYXo^lVqxvs{#0lz>_T^Z|HRRR9#$z! z(!4cDC%tlfiXPUi<3P@?xXp6i8%w-SoXI8IpX(<*7g>v(Od|62#ij(IwLi3wiL0Dh~S>-f=w9+THy?w9_Ku-M5Vv<^bTl}?0rVB75MTY&k^*9ghEn(!QR za4Ip{seW5sXKqcowNQR&ye*|<=F@>)yG{?9{*(BW*Uq5aTRoBw2yzVpmd6Bx)3NC} z>PCHsUjU%S@M!I1@r)!i9XaWmCXTnUU@Vk`X}UNvP}4$W_!Xp8@U9uO>G;$i7wbxs zLUc5{2dI@n<9@&6DX{9hRLlj zJ;L=3M2LAP$&{m4m{xAt_8vNP-LiU8p?U5clv=QDGYL?$f41Ehz8Q4#m0szweQq@O z0O6}UZ~B*}i60uu*g1ALkHDwh8Oiz-g%|L`j^$asS8W-ij!TYtob}`es&~X>UrUN5w6o((1KQU)8V5L`iU*RGWs7BYP8~0e_D;?r7c; zA82M@i@Ud$^bL6j_<)yx<)xo+C#4g3J3v?Gh?emuP8Y~DKWl;Pg1lJ$8!LVR7(kU#u}gy&6G%O7s-q3tf<~Zcd)`fKx=jp4b!yvz zhEoytoePys)$NKOM_A?G!hFLPxATxQ{wYChsB_jfRaE2nm#|)ORofsS`rv$Y^0EOQck%rTx*k*pMlD_r0QvTIU^J7pP=xh5?OzUhf`tB}g2 zwh&2NrrNjAiSaT8`Z=Qqxo%tklN=*jycE1{5}kH!1K(}@3)`p49BTnCxGP>KoN$g< z*9YMfPXH7|N4A2INMjwMBzEhk-EO@zBDHp%Njc#rV1X>QI;S4aeCIdsP|hSQABH?{ zh7h|6GpQrNvIpO%ezVqTe$z@~a9#hEeuB3W&a3$!iwraiGSKLAy(e6^a@0ze(H)+O&Vyyc!BGJM;FdcQIOrad;Xi> z6f>9YT`}(q_J3GnYJ|C=yY5|MF_KASKlnP!Th$OpUZA9+)P>ACG~1<8#RJ^P9{I#4 zf`{6hhX}3@h+WNZSMOy?6)GLbhri5z*EGdl*NUmesM?}{IWb%~O9!&z6w$1y{HxR) z;`glGAG}G%>_0VC2k8+K!W53)O-Uu`!<%}Nl9u&?qN<8{*ijh?x#TZ<5&@VF8O~2- zQ`Z+zMWN2IJAfXa!9=7r)H&votU2dD9t{VbUFphb*asN_)}eQjh!uWacaO}10?VDE!Bq~xbw9ecM3X5KPD}>~4EHB8_!}XNuXn*-=1_XaB!(>3z-ot+B>}~1IN#k+AfqFj-Y(u90bn8E%+46LZ zTk_vTJe>1TIV zKw-{e@cs^`a=#rYf0{jfw$in=^s7p<_EsMes+EYT2{$NFHpq2=8d?42gjB z3o0(G;36VX-JR`i9Gi1Fg8qn-rvWZT7B9}LWi8^^xlqCuM#yH#g#pcg?u#n^+B*sy za(~f2{YNep-cRMQLv2Kj2s1f@=c2WO@Wb}LK8GFH!K8FY%#l2(X1xBE3ILDlj@!D% zxxNmpd+S~ehXTW4l0#7^;e_0OwX2m;Pxh-t$JXM%&a5so7wJm{uZR|)_rvDT8{00<`IEJ^yf z^Hq#doNvd6b_iB)WEwvFQ#5pWHe@rvPy_)Zo$n#((X~GifT-}6VR-=030|WmJ>7=m zm?*RJR^Izb;H5^?zkQL!B~K6Y^M)=6FvdLEg}U?;dfva*PP(k{J|(*`Cs;-+R9PA`QK0$^JZ1qrnBqE2lswI#bg;;e7* z_)@_rKJ{y>ud&lqlQ28L4^z%LU-}6(xj+0$Qp5hQ4oZA*Xy2sjClUloTr1NnQFk?*~ zF#ZlA?43hxqA6zWxeja*9u6hE^7}6l=Pn>vmKq#mT{U(5yF~x!?4xw3KXtm(w-G@; z)0iVO&?%C&sqov1Mif`nb#2{kIQcHO9_g9K%wU7X#eNd*ZnzgAUoBoxcf@mUMxB&K zj+ycQ=b$CBKDEr$oI%f>T}Q&Rnn*YgbrLHn8gTt)=jy)Eb#9xA?!MK|`O7UZC;7t< zH44L;f=V%`@|Cq!$X=*7SsG#4YfG74}7($@?C zaS?-!&-c>SXGPfE53W77X*EGzM0x zXEKX^7t|)#zmlccv5dV+Au_Q^ue@t#wl^<_yIkt2pS=x)#~vkI8}LF&d)*z~k=T%6 zHwMt$PjIG#J;D~+J~QZQ@XxvAoF5d?`*<_0*oP_B_4uNC-LNGlSAyPz{0>w1E~14; z14@W{*3(-k@_Ir}m~-xiJ;kui1d*EEeer>>_uLP3*5wm1EBt#(bgw&ivDBLaQ4>Dy z_Y7>LHN=GDo0U~j9D8Lfeg0oKCCiri%9&@pxI&KjsvAv?=42#KPj$7OKvC@_@6jg+ zQs!C8Bj64u*WFG|$|m2@CCKbHR6Zz!KgfTWsy^|%RFk9*HZr)HLjX4wvoH8wnk6z@ zCYlF{%k2MhJ+j@1)>g{yg_PU3muY0V-zUF#Jn*xAw zodt}-Dc|aZA`s!%<~#P5Pyv5ut0rB!Dt1}#T@C%1=C9Uw#oLm@fn(KCh!kyK z^%4||xZR1y-D`!=+UqSkn{8>gPARhH{KVEp3g>x5+y(kC+wg&zUUcso+o7cwKx%N@ zY0)Ocl{udg3DqK)2P257q)-yv{pZuAE`2&IJw=ye96s#O;ymse=mGIQCuQzd|A`)3dU>q@k_(+4|v1Ujd;a-ANs!pMQot&^P`rz7Tz9K=$R{4V{Cu zy=H=X`A+Z=WJRps-wXq)P9m@PDn8D=u%0dZq93pW1({5-Aiq)AjPZRwd0D+%N`AM1=KD4Kyi&-i2@|FBx9qB68Mw`2zm~NOP zTrrs?t~o&Z{HcK&z%B4SNERBtd=tmjLQ^ODPuEG+Yz4x z<3(<(UM-QD-cSb~ViR*a-#^dDOUZ|@RJ9p&wBL=Rk*uh>z5_OwvQ>p1P_hkk0KtVfo9d9wPp|H#(G^7Qm9Y#%*u6(egD6sd?>M0N2nc6d5X`&GHbimoJ#({sy}X%^I;Lc4j*dq*U&lTLeTAcec~>|7cItL)!vAzqGW zxUKy*9OpWQ$eg;hH;?KP{+hewWCB;p6eR|Hyu@DXo7T>>3t}q{{8|7y$xha-k4sTk zYB4SN!>o@awZT+AXa!ik@$s|_yQW#?wT~{ksd?@&2pBXkCi1gMZ|GOk(>dKzia%B% zz<=A7+A^rYFOvAN46B4llW=28UIVtAz1cH@rZJZnZ;#}c80|$fHENtcUgaMJ!v|oR z<-X_~sWgyU_xhBs$YTls==Ki4?u*TMbrPsuj;=u7uTp@i;|^pIczY39skl2mT=8fk z5%?^kbQ<`=oh*WDDbWwwv__>KAn|d4gs|4cDdr!hy73ysJ^KqKOxa!o zU6r>=pmaxTD~7Yoy{dVu94Ukz5&3~>iTu)jH;J=?Q^-8H5Yo>AqLUojfABwFWxjIQ zG+_(5?E$iv8QMtHL_>t0&ArSmn6%hyMFdQ1q|Nnm{`rH)WrNK~sUjB<373oY?ffIH zcnE(7#FRfcmS5)olVa@d@McE&aG3aRn9|`QwjD(&+QA;{zeExQn9e7iWGlXFG8sGx zjIKSM%#z!66)IaSqvS0*dh<5uiN}gwF6ZRE>|=qWcO_mvPUU01L80mCxy87i5`l62 z)mVc_t+&8ZGQId<_zuQ;CyZ#t3@h*K3 ztyr#4{SGgPbfevu{bC5xHaVyq4!i6750d~H)(a~oOP+<)A2ZF`Kh3Ix44>gaT$|WRmcG=4Q>yRAxa?3 z0-(O)Z=By*6}OB}iQov@DMYE;gmKoV-c_9Y^X&tO+Iz3uf3_%^@^qtq~}CN&zMgVg`btAC7r@7Jy(8keQ2AN0gO6 zo_HCdc;I$Cjk^cSiFR#E$SK2WNg{$5TBg^)u}LxC_=jH7PlU7z&wRR({wHy0x2}Ev zEwBco-#92NQaOO)nid{KPa)mAN~UX=^dayD0K?X_hKVSX@^M=>=9;Z5Tg9t=Y>D{W`69^z-G5jZF}SWZq1J;zs?Cu6-gH z)%AtIiq-p$)pqdy2*_R)__i|qS9E#Acgh}f^>G&`H>if?Lv?*gy5Bo_h?Eo)Cl*G3$l9s@42Q{KB1JnObrQ@>F0< zr~}pWK)2Ys-p#)UyuOzo`JJjAf`v%b(o;lv^~87!*gpNyvT9#iYL|}7Z4J^6-vJUc zn$KeZ1KH_pJbm`@z$a9}x#vf|$WOKL#Z zE=S|AE115@{O^xVcZ)j(#Ncsz4=6R)#Cd?hIxT17GeGM7{;P`i@fm+r@YJ;f2R;G7 zl!SjswYKF2WDlNQ@q;)8hy%#xg&}kFKZb!Vw9K^AtF;a9ulo<#Lz(gdV1<9&JR3;# z_~GzyM{$U?&4l5#U{GSH(;j+w{(?MaS^Iv^`|1e?kbdwoiym9v_MQG9Brx4(D}PTb z!XCveH~SkNCK?Qo2&*u9?S^IczP)`q=nn=t;Lg+i;B?1F<><2I+TO3e>)BA?SV(d;q3iV6bT-R zfiXh|1C)?u22HVS#{umzP7CZBnvg&D|KU#nmTu>6BZDX z`!ACD0)$Y}<;117;|u~M?@WJ_mV^Dpw!jQ2eX{3 zOTUBV{qyrwdrJY$Pfd)tS>``o@~z(u-V%@cnQZbq_0M&z#VC&|Dolm_f|x0BiSL$` z;rlSk0$1ki2#wB~HDswBcxdg;x3$c`jsdq{5~QQqp|#ytB%+_+3IO?BnBUU$CnOFw z@ngO2=l7xdk<}VNB3qLrFP<8(#C{;(N9{s1w5I}tw6Rw`-QKLNpYatif^8tZ=t#JQ zDGmz1c|1n<;El}MW>=)@!}QT{MODWh=WalH4lqERPd$XE0o@Oo@Hn?b**BDoE%#94 z0%MB%OpGr!V4$ey*4pl+rAkBA-%Z#RB>#u5{onhMsv7<&97wdmze39i_B$|9IQM)J zS=;(^FP5zV+BK7`_9ld{lxfRTqbIm478@R*ZN9}A4(9Xj$I~jqj89^YUW1}H2fwJz zY3E&Ef;aOO?mxV{NMAe~mIriR<{)P zI{?aLh*-O4)JHM>NjXcF=Zfl~?g8ou0g=a^9Qf{c=D}zoHK{>aB#?Z z87TE=xn2B+?qSohs2|Sz!9d zGl98jNFXQws_u8X5bxWbVKIt!KUtasDyX4NZtbwG3Q!-qH_r!-{^mz#_1HuNTk%Mn z26(1K3)VL=fQd?@3dEbcb|}_i-x`A;&*=1C;xg^m8GWVtPMxThA;`Ry&PaM%1mSd~ z1^xv=%Khdc%hqd-fY{12N7qu}cEtpzyLR*>2i;u&qUcfXtG^CLY92=YiCszjXyTx| z5vguCRD;v(60ypyXHr=zq&jYYQUh_|H@UQK1e84D@b+N&HG_>4p}qFUWsT~vv`5cU zfQ7FhD!4WTp6+qG9_TFbBb7`0_D9Ge!^{^nzOHV*8Z4uv~6iijJ`8=1zuWKE|v5G5NPNu?E%$0_0(Q1 z*3Reh#hNq$Iwjm(SC^C}R3&iV*WBr2g5@&rlZlfA4qLcZ7*VZwh}cvZy!c>ZcjY`|duz?)fe45>k^nzB zuSG9cK{yGYOy2{FHYD>zVCM(VPkBJ|4p1%yj49Rqygs+P98;R63$9D7Yuf>iA0lel zk3aAdanvVT3&>bu$mVT$4W7#!d|kq%Bhu#8xQ*olq=v>XOo;&>!4;G`wwVuZI-1)8 z%dZlv$^{nIdIIlEIUp)_0^A#qK-|0gZ*FYE=H%HT)8YT=86bvVc-7fNCkvygPAdRQ zu=sV*01P{5s4-P(@CQs$E8YI?a7A7QE+DQfCo-l|^Js$NZa3fa5ymQJLc-iZmqH@7 z$3~zX*`X+1TQk6c0?qgH&R*fRCkvQZQ$AX5{db)L#aJz~s^S#`#An^4F?#Sq`43o``&G(9Bm;DZWEw$H&&XZ(j)!o zmB7PjT*v9>SfS@@{1AzmoJjRqVB2}<*!kptb@&7>TW^gd=cgQZiK*TUur&r=0jE8Q zx{>+7{q-feqNLB0da`D5YkQ|VOBvPyX2VY$l5RaHR~H)~n6=pC?qjlY3U>kS5>( zf*C@Pe15fHA%snY z7~lnZr56wq83{MAqPUN(7&WAgt?$r!cVeU=0PAn@OBwDU%gNF$j^~p=x!9{+hHkzU zeh5|rU)GW*HFbGc;5Gw6NA59!>#3u%Q9-_ z6OQT^rfCm`>T13ilb0MS1PRt!jGZueWpABM<97<22-kV4uKty&b_+tt4Q_-qhKJa{ zy$W_#+*<;NB5WASNAAATovfxGQ9PqGy+}XX*E)VIo%bp8`Q}(SYd|V~FqlI`H>H1{ zA9m)08|P{b%Aif2?w4cDxr_Dm+-OQuhVrqyEq{Dq;haJgfA)OWBCU;un()`<#NJ~_S~nwqXdnch z;B{(Rr4zcTPph!Q3ts_bw>>Y1eh;qBRu9J=33s~#q6qpRx`DHCu_fx+2sL$}n^oeT z_kE=xz;d#dIInt&20bA&YhiEOz7)TWLIIFr%VqPHLuuxXZjdj>TlhGO^}SQ_H!oTsVNm?{)r8(c@R%HU5>0;(Zqa@5OH;29IT%c;{LVx zpyD5U?T;czfu#3-;4?r4zyYB*YeQF_G7481YLyx8-PiQ%Z_-4U%$purp^o#CFW8~L zuPSiq5r_ev(>R;AxS#q@feK01XDItPlI?q zO)mg<*$uI=1y98;n{9}1p3MDvbTW$A>87FuTxuP_@G&p(%;!SM^IyX zWsaLtn26JZm}gOOa8ClzT4XBU?klm84NZRcB!!{*B+!KE3s2Ibw!xD64N1E)eO?6D zhV4C236;QSuYye{al=%Nb^7f6>c{`za)V}=EoAMFA-7&%dGaG4 z0ZDBjo$!%@Hx!7k4jw0ZR9<0kT=DpJQhm7b_skG;)Ia+ZZ1b(y{5;#!3Ta3OUN(%P zb(CjoUNLSgf}X2?n&6}n{(ODE{TiqFWubjYdout3rpx}Cf52s8`s$!IYt!yttJcwI+{m;7!>`gcS|p$E%{#j58-?cCLIZVuLcKca@cSwL&M zKI7_9WK6S}kma2pAI_3M>8rDnh&CEe<;2nk=ZEW0-^0TF+5??F(YhQ*!g_SX_?#nE=AKVFz;6}tVaB%~Pu~!#50^o&vYhkyUe?*((m+O*}Ivp9~mPdqIwdY-B*V2b8 zkE_J-=lMW}0{6b0{Gax&{h#SQjDO6^Qm2Hoa#TX573Jt=*4c^()hH4ZTjbsaiQL9I zNgYG(6~!T!j#_6@J7QWzj=2?0y2#S#CC!#7m)XwetIHp8UVUHRU%o$lKHu->c|Fhb zc|Pyw`M#ep-AAdswd(H)OD5iUgn_B#*yJ2B$FQmZXHD0Hj%t_pg>_9Fct{1czDwEU zJv5Z4@I+Zk)C28^fELaYJt}vw)+p_Dfr@N6>*Ft$5t3kMi`yCDIItY#ktP+;c%b2*hcj)oeSMq7+5x66m2L8h{BTYM6FKPmt$D3bmu?m zXn?4Z<*j}r@UqCxWL`-CnW&{_|AJGwnC-07V6_}Qd#3O3nLq=y-yCh56GSS-+I*n* zLgu2oB>}-a{~)f$Q%Tcmd|vF$j#Wd7r<5+Yfnxqoje;5ohG3W~b66Ai$Re{&7tA#r zl$xrHUv&Ama5K4yw(%|oF=12oB~!JyMg-})nYFatT0jxvZI@LZn{D|};6AI47)A>u zp>aqHwS&1NEgEz+^SkO6f#hII&S>{Q&z!Pi&V#YkCDW{wnz}f9#mnjDK9{JZk0aor zwnxw6{C@0ZpE$FO9Q0X84a`EyQqF{QhGSYZS6ZEmsLUUF#C(x#J`}{`%4^fa?O0*x zBw>wP{EbTDaZ{j%k}18i2-Tm~In-^DdLgpF&Ts)QFH6?wzW;b6HSu^se!_T=VPjxx zg!F|sW03laU$b8iH<5X*BLs$7s(b}tQyC`cJ9fuJlP|#LOz{-4vFL(3+L2xCe3 zweX*SLLx(O$6vwmIUWjp)JmnNdQxRIJ4BNnc9iIpQhBW3aI+1ZFzotvTP=tOo(m@d zE}s0Bs%gRqCBByKQ;98>2X7S|O|P=Py%9G!3O=dOOBlWAv4sW7>AAqzGvjRZ(+@_# zi!ze5!@P8!A=;`C8cz0heRR%wNLC+2upKf3ZN$hsMoZb*Ldl_t=gQAOt_$>b6NK%Y z6}b-PMJtO7u3zcnsK&I7^hO+#xLt~}Crsf)6)H=tI~uDIy)r_ahW#Sk19hf5s{e$b zFEc4;wZi8Qr};ck#~auZEv*{wRif$XE=qZkT#ikMyw9L1xQ(J{S9Y&pb9`Cbhqvb= z^I?I73!peFxJq(k)x=vCXrmsHxg7RI}vP_E>XGiiHK zMqWdOMdK2AQUuO>$eM4t7t4zKEnz|ZRcb+E>&{Z7_$|E4avhSGs?|NV#eV%^|K?CD zj?hpxW-xDPbEaOqX`9f4&$2*oglC)VxBBQV*s3Tw%W#`C#M3wT=s(wWdbXCmdE*qE z&Z{Vw#QQ($>U6`L;x}k4*@;KrHgpoJy$?BD&hlsuOw-U!Oi&#qJ4ak4p+r6_;@3Gi z2Cj!()L)wfHYHfmL(vX@%YDKA1DWd8MsvL-=sHgq8F?0;OtTA#Ce}Z}Fpnd_rKhX; zM+}pRv8!a=JMB=dol)$6Mx)c)330&6_b&ZcLv(wDLxYA_ix28 zHO|9zY$#ph!nhVNth~LvERoyB6WgM66h8X@Zk8n4D8NOLig09Nl>KLa}>?=bU)F+geU%sq4S zSHiWXoZOId`pfec%ua;<7=ME?und`EX4E&p;p?*o>I07X_2i2{OxCn^FWA|xoN7!f5X#3Q00#}42@ zHnS@Tf{P%B7oM9KjM<2?AczWsfH2BAGu{2JesA{oe@u6}r@P(m8IZW!FR6ajRo_)# zeXr`P@2fx{FHkqoq)C8xL10XNAkZxk2ow|?{olT6AW%$OVPRE&yFg%li$I_~Fra{O zw4K)<=Gm}eL;rE(#;v97e&mry_V8Y_apT5*nGE2SS6-QU#u;b0z*hF}-`^fObZA6% zwW;s7XslSVV&rM3o#r)c*wAa-xUpAQSZH_d+}Wn?s!e^XR;?PDibiE+W!}v<-@N^z zi!QR;wQFY$8#c@wGiHoKu~k=_`fj=9mhFPAPQx_KHmzEzi-BF=_K3)zx;^S!cPxL~Pr}S`web zhYvUD)~%aGYh}NF{akbrnK5IAt)e=*^mTgKWtUlkO~gL>?|}y%SSfs!=bn4ct*EH* zRHjXv=FfrJt6+{IRQvt)*I(QA?Ah~x;Kq+1??&ZUU2XL3FDol+TMaGY?~WZiI^BKu z-J4ppXc2k+_1FDE-Bp|V5`feEfp6WPfBv~oadGiP71h<22K@iJS?f#zr58o(Q|`%W zptc&|TdPCq8w!PrSpWXHeEITiDyoOW;Ue`3rnY=i;X`-eC!c(>`L^3`b51__WPjZn zK74p+(xgfL+NicW?zqGL?6c4QE!b2vYSIR+eAd7DtW)CSQT%mO@0BZ8RvbKd(5}|* zjTkY)I&k2?JmJz;;|Kh_ef#z;WUuqb2%#8n)t`9c3G10>o=Mr)rArrk@7}$OM5Cqx z1cSkeJ$m%e_!9W$<>k3oU3Hal(n%+|_3G90>uReGcjc8=+M-bt{)S-`Jp1gkd>QF;F1X-=1bNx-%0(+%8PI#tsi&SAKPInf)20^t zu5tS5r#mmd{Id8vDypmP#TQ=;3kF^>JAp=|w6wG+8~&eu`f2|B`SVM`sl4WzYfOBt zih%eTTlF7s@vO?{VNez|qS4L5`)OqdY7`s%9<(LlaZ z(acl^zVEJs2M_l3SWr-4;JY|aKKWz>U7B0AY_ZNi|NJn1k&A4$ie*_5+Cu7M&WtHj zrr2kneYOp5So}3t(Cm^af9TzL@x>R%=JERLuea~N|98wz zhXG8&qc-))76i*W72}V8XuyATru-TIunrwM#J=n1&6_(VB_%dAjrZPrFX%W<%m<4K zp*HmiX6MeGj{K~s{2e=X)cA*H${(Hn8Gkq?zvy5~&QCx6zt)am)dW> z`DWz(_useGrar-76Hb)3-nZU*tA%gdJyZV7W&K&RW*v&BQC0WOJoC)RqD6~L>38D9 ziPqzfKQ7;T%_iZUZKi@4cFPHsA@Of4D ze*E!AhjlKZ^$-RLYo%x~cf}bqt^&jcI`ZB7-)}rk>@sQYrFT6#hs49G{^+BR8lqK2 zHmleE{rhLIo+ivCXD%l?*GIV?{Z$)lT>|Wd7hdQbI&^4yR!rl7pH@w$${oHkkdd;12GLK zPNJaO2udzaf)a91P6Ig&{7-72%3t~u?+%=uhvUP}-?eMk2b|gdrJ}mp)F&8dF$|tU{0)3X%uU|hYrVuX| z@mH_7xY$^>Y?+~Yd|&mtViC}UbomPLI38nwZav}+Gv>~nYu2q>H?2IxQ5<51<|(I~ zqMWWn+|*HBZR)Eod-T6(a^{4EHAB3PC?w<(xi!9W!Jj9U=lM8Ydz6>_UzdXaYIjqy3Kd2K39FfTA~B4B^rJE_O(P) zZJG~w+3eeYI~MX2!)ml?)21Wv@ok4aHAH?b$X;5Zm_9N5FflcYdlLq-S&How|BT#s z-+eKAC+=>ljaZlu1FWeyoN&2opj=&0b8_R2HwGoY#zcJYFgDb%wqrPQ^FPK>;a!#JGpzyIDMS689j5&Nx&U*mY5S4nQbQ&F9m zv!g!2FlQlRxE8oJd7sG4nKMICy3zNw*IsLYyMX_-dRX_Db?@FirWc6$^1t-bOBLwZ zP!5G}P3xuc)KgCdkufO;gdO`2V=#e{?v;yim6OE(2}8@b`zUR_*)Ph7*DkG<@E{}q z5@?z6v{h&B4RTX1ex^bGPPqUNJCWY~d`(p5__z85BUs_cM->hBf+YR0-iF}4xVG{$ zhjW?dB>UkzaM)+8FTVJ~!M8WYjvae|b*e)7hIpCd>*^B>u=|B0Txe*YNZQB9?a6+! z%Fm`6EA~1LUo%O5&4KdLn>TNEWaCjerGEAv@9nqWHnA6d54ziB(&olbjc~sG_FIQJ zNZQjyd+OAwAz;R)k|~=u?v8aPhoYQvlE10*2)TFX;fEi#$!|K?vCTQrL0(HaFV@Kr zYmHxLZ!pvcoN}SUag?`@o_8d3w1^kELyL1k(!IBAWEU)Y%_j%3Jyi}Y%8$2)KkcDQ z3qRh)*D&w{B42&=mBrmghr5JYV=B}Kj4fE<#No$eS6iDlZ5;8;Cbte=+GqFf-BWeX zB$ci}it)y-<^Q_qIimfHy+iAz?m$}X`;@AGEngFeR-(S#}^(2mG-T z_Vu(n(;0=cK~nxM`dvid+<$PY^dB2{RCc|^gZ%Rj@yt@pwBYb=zVVt zsFM4OvF|u4Z}m5Rfdy>Rwro~!5Brqcj-EN9@~}=B+P{EFc+^H;f*&GW(O`eknRf!^n4a6y4G2EB)oDARKEVi9IGNJ_J>ZZ>^U;jblQM!Ld!AZVR9Bn&1am_5 kovA(~=O0DZOvjXi%V{8|ft&_%8pvrNr-7UXPP7L81J0+1+W-In literal 0 HcmV?d00001 diff --git a/leaktopus_frontend/public/index.html b/leaktopus_frontend/public/index.html new file mode 100644 index 0000000..f3229cd --- /dev/null +++ b/leaktopus_frontend/public/index.html @@ -0,0 +1,49 @@ + + + + + + + + Leaktopus + + + + +
+ +

Leaktopus

+ + + + + + + + + + + +
+ +
+
+
+ +
+
+
+ +
+ + + + + + + diff --git a/leaktopus_frontend/src/App.vue b/leaktopus_frontend/src/App.vue new file mode 100644 index 0000000..7ee6485 --- /dev/null +++ b/leaktopus_frontend/src/App.vue @@ -0,0 +1,115 @@ + + + diff --git a/leaktopus_frontend/src/assets/css/reset.css b/leaktopus_frontend/src/assets/css/reset.css new file mode 100644 index 0000000..b4ec723 --- /dev/null +++ b/leaktopus_frontend/src/assets/css/reset.css @@ -0,0 +1,23 @@ +/* Resets */ + +.form-group { + margin-bottom: 1rem; +} + +.btn-primary { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-primary.disabled, .btn-primary:disabled { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-primary:hover { + color: #fff; + background-color: #223f63; + border-color: #223f63; +} \ No newline at end of file diff --git a/leaktopus_frontend/src/components/ScansList.vue b/leaktopus_frontend/src/components/ScansList.vue new file mode 100644 index 0000000..0fe60b1 --- /dev/null +++ b/leaktopus_frontend/src/components/ScansList.vue @@ -0,0 +1,183 @@ + + + + + + diff --git a/leaktopus_frontend/src/config.json b/leaktopus_frontend/src/config.json new file mode 100644 index 0000000..711e953 --- /dev/null +++ b/leaktopus_frontend/src/config.json @@ -0,0 +1,3 @@ +{ + "LEAKTOPUS_API_URL": "$LEAKTOPUS_API_URL" +} \ No newline at end of file diff --git a/leaktopus_frontend/src/main.js b/leaktopus_frontend/src/main.js new file mode 100644 index 0000000..9396f05 --- /dev/null +++ b/leaktopus_frontend/src/main.js @@ -0,0 +1,32 @@ +import { createApp } from 'vue' +import App from './App.vue' +import router from './router' +import Config from './config.json' +import 'bootstrap/dist/css/bootstrap.min.css' +import 'bootstrap' +import './assets/css/reset.css' + +/* import the fontawesome core */ +import { library } from '@fortawesome/fontawesome-svg-core' +/* import font awesome icon component */ +import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' +/* import specific icons */ +import { faArrowsRotate } from '@fortawesome/free-solid-svg-icons' +/* add icons to the library */ +library.add(faArrowsRotate) + +const app = createApp(App) +app.component('font-awesome-icon', FontAwesomeIcon) + +// Get the API URL from our configuration file. +let api_url +if (Config.LEAKTOPUS_API_URL === "$LEAKTOPUS_API_URL") { + api_url = Config.LEAKTOPUS_API_URL +} +else { + api_url = "http://localhost:8000/" +} +app.config.globalProperties.leaktopusApiUrl = api_url + +app.use(router).mount('#app') + diff --git a/leaktopus_frontend/src/router/index.js b/leaktopus_frontend/src/router/index.js new file mode 100644 index 0000000..afaa1d3 --- /dev/null +++ b/leaktopus_frontend/src/router/index.js @@ -0,0 +1,33 @@ +import { createRouter, createWebHashHistory } from 'vue-router' +import ScansView from '../views/ScansView.vue' + +const routes = [ + { + path: '/', + name: 'scans', + component: ScansView + }, + { + path: '/github-preferences', + name: 'github-prefs', + // route level code-splitting + // this generates a separate chunk (about.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import(/* webpackChunkName: "about" */ '../views/GithubPrefsView.vue') + }, + { + path: '/leaks', + name: 'leaks', + // route level code-splitting + // this generates a separate chunk (about.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import(/* webpackChunkName: "about" */ '../views/LeaksView.vue') + } +] + +const router = createRouter({ + history: createWebHashHistory(), + routes +}) + +export default router diff --git a/leaktopus_frontend/src/views/GithubPrefsView.vue b/leaktopus_frontend/src/views/GithubPrefsView.vue new file mode 100644 index 0000000..89e22ce --- /dev/null +++ b/leaktopus_frontend/src/views/GithubPrefsView.vue @@ -0,0 +1,104 @@ + + + diff --git a/leaktopus_frontend/src/views/LeaksView.vue b/leaktopus_frontend/src/views/LeaksView.vue new file mode 100644 index 0000000..2ba9c80 --- /dev/null +++ b/leaktopus_frontend/src/views/LeaksView.vue @@ -0,0 +1,3 @@ + diff --git a/leaktopus_frontend/src/views/ScansView.vue b/leaktopus_frontend/src/views/ScansView.vue new file mode 100644 index 0000000..4cf78b7 --- /dev/null +++ b/leaktopus_frontend/src/views/ScansView.vue @@ -0,0 +1,17 @@ + + + diff --git a/leaktopus_frontend/start-nginx.sh b/leaktopus_frontend/start-nginx.sh new file mode 100644 index 0000000..26ab0c5 --- /dev/null +++ b/leaktopus_frontend/start-nginx.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env sh +cp /usr/share/nginx/html/js/*.js /tmp + +export EXISTING_VARS=$(printenv | awk -F= '{print $1}' | sed 's/^/\$/g' | paste -sd,); +for file in /tmp/*.js; +do +cat $file | envsubst $EXISTING_VARS | tee /usr/share/nginx/html/js/$(basename $file) +done +nginx -g 'daemon off;' \ No newline at end of file diff --git a/leaktopus_frontend/vue.config.js b/leaktopus_frontend/vue.config.js new file mode 100644 index 0000000..9a4e2e6 --- /dev/null +++ b/leaktopus_frontend/vue.config.js @@ -0,0 +1,5 @@ +const { defineConfig } = require('@vue/cli-service') + +module.exports = defineConfig({ + transpileDependencies: true +}) diff --git a/logos/logo-128.png b/logos/logo-128.png new file mode 100644 index 0000000000000000000000000000000000000000..8217c662587f62d200b7bc198d100aca494b3a5b GIT binary patch literal 7619 zcmcI}cT`i`)^7+MB=la5Kphl%jMM zj39*02_PM$NEP_tob&EI?~eQZ^Tv34jg>j~oWI|kbM3uGcIFP&P+yCIj)x8a05Iri zBaP2x#KokcI{*Bja`)r8pm0&sQv(2Mlj(omr93|ua@01~0|0_W&v6d{fTIii5&+;Q z3jnM*002rk001W@zu5?J?r=j{=s4@?0VK|K8UO_u3xNDwBRd}eG9JK1v~vxhLdN?q zT{8|1p!nOae=aW$?elqo`%40gf&W586qEm3zkm)zePlcrv>0tm9{_-!^7#P@+R*h0@xNZr#LC3IazRz?=ALMJ37gz$E9Rx(Cv{!KqWQwF>G`eKxz(13sd znSiS@p587{IYmW9s4NT$gGrwwqSp@XIdj6BC?&;>~ZGyS$h*CLE^e5#XrvF6$naA>f&GQe> z-%JGb;=cXkKK`{y{Z_osJkHe1)utj_A<YgvW*YZZjwiFF>UA~u zZv6ip=D`kQ)eX%)rFox^&y>ukYJ)e1S z#!dhoR6y4wWBmXHU+7(l`D|0IfSMU$;-g4QHPmXtTo*&<>n;MRAM7W{+5so=k|aq! zBoopc=?aOJly{G=dpFAAQ@7U;Ufs$WJVmp18XrG5qbFLEKQG-i)oH74r-z0FsugUq zKTD8L*vER}sQeuU1#Q0Qq2*;Fl4GOSG5%Y7B=hLC12(9{j?)ix`5+F8eU-2l5|NbI zX#|FJTGT?cE$Q@QB|9a%;K&JrYj!1UWf!2e(Zd?!C@d&GEqcTyS^z!0h0vTAwlHy{ zc1tqAvUY98XJZHBmn|A4!XF;!5N6rlk0kOaw}XDe>{XEX2pzLip-Nc8lZJQTM9EMz2kdFqx`0>1VISe zi=?{z>stVLcVw5B3)X+_W?v7sLY?-KZgjO98PGXjvLje~hV?Kiq8B|C)X!T1%9gt` zmqQGB`$oH=TJRR$c6f2*QZ?8mr1N?{8!(Hm%p_noyTzzq^_~c4zFT$HuHr_^fx_&ADg5kV=Q9$CM<(X7r-P(XPrX0_Bc5CS?Cc>J_rYc9uo<>j5Xv)0XR`-iv!zktV9 zoNau-WV7#;%0odXNL#m|#nP5gV?Arm#_d!EeIE-UQoMKxVP&JFD1fn9kdv^y83b=m zA8szpu%qsGtb7jp+H}|$b-1!VBmecN|5i)I-Iaz_l!985wT+4>VPK%-#j(3cQ~C|_ z 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 literal 0 HcmV?d00001 diff --git a/logos/logo-white.png b/logos/logo-white.png new file mode 100644 index 0000000000000000000000000000000000000000..8838ec336810301d773396b58d5836e05899420d GIT binary patch literal 39591 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⋙P?!`uG>h`A5PP( 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 Oev}o}6{_VdKKwrm(XmYc literal 0 HcmV?d00001 diff --git a/logos/logo.png b/logos/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..319b7af3e11670a3787625b58364fe01ed19e3f4 GIT binary patch literal 32375 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

Rj{Py!ZT#23DI_*D;}Fl+~M-pi1}8O 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 literal 0 HcmV?d00001 diff --git a/logstash/Dockerfile b/logstash/Dockerfile new file mode 100644 index 0000000..6a444e7 --- /dev/null +++ b/logstash/Dockerfile @@ -0,0 +1,7 @@ +ARG ELK_VERSION + +# https://www.docker.elastic.co/ +FROM docker.elastic.co/logstash/logstash:${ELK_VERSION} + +# Add your logstash plugins setup here +# Example: RUN logstash-plugin install logstash-filter-json diff --git a/logstash/config/logstash.yml b/logstash/config/logstash.yml new file mode 100644 index 0000000..e25a54d --- /dev/null +++ b/logstash/config/logstash.yml @@ -0,0 +1,12 @@ +--- +## Default Logstash configuration from Logstash base image. +## https://github.com/elastic/logstash/blob/master/docker/data/logstash/config/logstash-full.yml +# +http.host: "0.0.0.0" +xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ] + +## X-Pack security credentials +# +xpack.monitoring.enabled: true +xpack.monitoring.elasticsearch.username: ${ES_USER} +xpack.monitoring.elasticsearch.password: ${ES_PASS} diff --git a/logstash/pipeline/logstash.conf b/logstash/pipeline/logstash.conf new file mode 100644 index 0000000..9e2f931 --- /dev/null +++ b/logstash/pipeline/logstash.conf @@ -0,0 +1,15 @@ +input { + tcp { + port => 5000 + } +} + +## Add your filters / logstash plugins configuration here + +output { + elasticsearch { + hosts => "${ES_HOST}:${ES_PORT}" + user => "${ES_USER}" + password => "${ES_PASS}" + } +} diff --git a/scripts/ack_leak.sh b/scripts/ack_leak.sh new file mode 100755 index 0000000..ea3095f --- /dev/null +++ b/scripts/ack_leak.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +HOST=$1 +LEAK_ID=$2 + +curl --silent -X PATCH "${HOST}/api/leak/${LEAK_ID}" -H "Content-Type: application/json" --data "{\"acknowledged\":true}" diff --git a/scripts/fetch_db.sh b/scripts/fetch_db.sh new file mode 100755 index 0000000..af1b223 --- /dev/null +++ b/scripts/fetch_db.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +# Fetch the DB from the web container. +docker cp $(docker ps | grep leaktopus_web | awk '{ print $1 }'):/db/leaktopus.sqlite . diff --git a/scripts/frontend_sh.sh b/scripts/frontend_sh.sh new file mode 100755 index 0000000..9d47068 --- /dev/null +++ b/scripts/frontend_sh.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +# Open shell in the web container. +docker exec -it $(docker ps | grep leaktopus_frontend | awk '{ print $1 }') /bin/sh diff --git a/scripts/push_db.sh b/scripts/push_db.sh new file mode 100755 index 0000000..2e4bd09 --- /dev/null +++ b/scripts/push_db.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +# Push local DB to the web container. +docker cp ./leaktopus.sqlite $(docker ps | grep leaktopus_web | awk '{ print $1 }'):/db/leaktopus.sqlite +docker exec -it --user root $(docker ps | grep leaktopus_web | awk '{ print $1 }') /bin/sh -c "chown python:python /db/leaktopus.sqlite && ls -la /db" \ No newline at end of file diff --git a/scripts/web_sh.sh b/scripts/web_sh.sh new file mode 100755 index 0000000..9fda332 --- /dev/null +++ b/scripts/web_sh.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +# Open shell in the web container. +docker exec -it $(docker ps | grep leaktopus_web | awk '{ print $1 }') /bin/sh diff --git a/scripts/worker_sh.sh b/scripts/worker_sh.sh new file mode 100755 index 0000000..dd8db54 --- /dev/null +++ b/scripts/worker_sh.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +# Open shell in the web container. +docker exec -it $(docker ps | grep leaktopus_worker | awk '{ print $1 }') /bin/sh