diff --git a/.editorconfig b/.editorconfig index 6e87a003..9b735217 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,7 +4,7 @@ root = true [*] charset = utf-8 indent_style = space -indent_size = 2 +indent_size = 4 insert_final_newline = true trim_trailing_whitespace = true diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..b5a5cfc0 --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +PUBLIC_BASE_URL="/" +PUBLIC_API_URL="/api" +PUBLIC_POLLING_INTERVAL=5000 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index edd2ae10..e56a03a1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: - uses: actions/setup-node@v3 with: - node-version: 18.x + node-version: 24.x cache: npm - name: Install dependencies diff --git a/.gitignore b/.gitignore index 05f12ffa..723ff9d1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,25 @@ # See http://help.github.com/ignore-files/ for more about ignoring files. -# compiled output -/dist -/dist-electron -/release-builds -/tmp -/out-tsc +# build output +dist/ +public/ - -# Application onfiguration -/src/assets/app.config.json +# generated types +.astro/ # dependencies /node_modules +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# environment variables +.env +.env.production + # IDEs and editors /.idea .project @@ -22,44 +28,31 @@ *.launch .settings/ *.sublime-workspace - -# IDE - VSCode .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json -# misc -/.angular/cache -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -testem.log -/typings - # e2e /e2e/*.js /e2e/*.map .tmp - -# System Files -.DS_Store -Thumbs.db - -*.zip - -# Generated FAQ files -src/assets/faqs/gui-faq-*.html - -*.log -tests_output/ .e2e-chrome-profile/ # Emacs backup files *~ -# Generated by e2e -/test-results +# Playwright +node_modules/ +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ +vendor/ + +# OS +.DS_store + +*storybook.log +*.zip diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..82cc41b0 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +/* +!/src diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..0c8395f3 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "plugins": ["prettier-plugin-astro", "prettier-plugin-svelte"], + "singleQuote": true, + "tabWidth": 4, + "useTabs": false +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..7a73a41b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/CONTRIBUTE.md b/CONTRIBUTE.md new file mode 100644 index 00000000..f8a978d8 --- /dev/null +++ b/CONTRIBUTE.md @@ -0,0 +1,66 @@ +# Contribute + +Thank you for considering contributing to Zonemaster GUI! This document provides guidelines for contributing to the project. + +## Project Overview + +Zonemaster GUI is built with: +- [Astro](https://astro.build/) as the main framework +- [Svelte](https://svelte.dev/) for UI components +- [TypeScript](https://www.typescriptlang.org/) for type safety + +## Development Setup + +1. Clone the repository +2. Install dependencies: + ```bash + npm install + ``` +3. Start the development server: + ```bash + npm run dev + ``` + +## Code Style + +We use [Prettier](https://prettier.io/) for code formatting with the following configuration: +- Single quotes +- 4 spaces for indentation +- No tabs + +To format your code: +```bash +npx prettier --write . +``` + +## Testing + +We use [Playwright](https://playwright.dev/) for end-to-end testing. Tests are located in the `e2e` directory. + +To run tests: +```bash +npm run e2e +``` + +## GUI Modifications + +Zonemaster GUI is designed to be cloned and customized for theming purposes. When making changes to the GUI, please be mindful of the following: + +- **Be careful when renaming CSS class names** - Many themes may depend on these class names +- **Avoid deleting, renaming, or moving template files** without proper deprecation notices +- **Consider backward compatibility** when modifying component structures +- **Document any breaking changes** that might affect custom themes + +While it's ultimately up to theme creators to handle conflicts when syncing with the main repository, we should minimize disruption where possible. For more information on theming, see the [THEMING.md](docs/THEMING.md) document. + +## Pull Request Process + +1. Fork the repository +2. Create a feature branch +3. Make your changes +4. Ensure tests pass +5. Submit a pull request + +## Code of Conduct + +Please be respectful and considerate of others when contributing to this project. diff --git a/Changes b/Changes index 3d3297d1..260c1c91 100644 --- a/Changes +++ b/Changes @@ -64,7 +64,7 @@ v4.1.1 2023-09-08 (public fix version) [Fixes] - Corrects documentation links in FAQ for all languages - (#433) + (#433) v4.1.0 2023-06-21 (public release version) @@ -344,4 +344,3 @@ v2.0.0 2018-06-25 - The old Zonemaster-GUI is deprecated, and can, for the time being, still be found in the old repository, https://github.com/dotse/zonemaster-gui - diff --git a/README.md b/README.md index f81e03ec..620541fb 100644 --- a/README.md +++ b/README.md @@ -1,94 +1,53 @@ # Zonemaster Web GUI [![CI status](https://github.com/zonemaster/zonemaster-gui/actions/workflows/ci.yml/badge.svg)](https://github.com/zonemaster/zonemaster-gui/actions/workflows/ci.yml) +## Overview -### Purpose +Zonemaster GUI is the web interface component of the Zonemaster project, a tool designed for DNS validation and testing. For a comprehensive overview of the Zonemaster software, please see the [Zonemaster repository]. -This module is the Web Interface part of the Zonemaster project. For an -overview of the Zonemaster software, please see the [Zonemaster repository]. +## Prerequisites -### Prerequisites +Before installing the Zonemaster GUI, ensure you have the Zonemaster Engine and Zonemaster-Backend setup. Refer to the [Zonemaster-Engine installation] and [Zonemaster-Backend installation] documents. -Before you install the Zonemaster Web GUI module, you need the Zonemaster -Engine test framework installed. Please see the [Zonemaster-Engine -installation] document. +## Installation -You also need a running Zonemaster-Backend component. Please see the -[Zonemaster-Backend installation] document. +There are two ways to install the Zonemaster GUI: -### Installation +### Quick Install (1 minute) +Download the release zip file, upload to your web server, and configure. -Follow the detailed [installation instructions]. +### Full Customization (5 minutes) +Clone the repository, build, and deploy. -### Configuration +For detailed instructions, see [INSTALL.md](docs/INSTALL.md). -The configuration instructions for the Backend can be found in the [Backend -configuration] document. +## Development -The configuration instructions for the GUI can be found in the [GUI -configuration] document. +To set up your development environment: -### Documentation +1. Clone the repository +2. Run `npm install` +3. Run `cp .env.example .env` +4. Set the URL to your Zonemaster backend in the `.env` file +5. Run `npm run dev` -There is a [public documentation]. Some more specific documents can be found in -the [docs directory](docs/). +## Documentation -### Contribution +Refer to the [docs](/docs) directory for detailed information on: +- Installation and configuration +- Theming and customization +- Translation guide +- Testing +- UI documentation -This project was generated with Angular-CLI 1.6.8. -It uses the Angular 2+ framework with all its tools. - -The source code of the application is available in `./src/app` folder. - -The `components` folder is composed of subfolders that represent the main -components. Each folder of component contain three files: - - * `*.component.css`: the component's style configuration; - * `*.component.html`: the component's HTML code; - * `*.component.ts`: the component's TypeScript code. - -All assets are available in the `src/assets` folder. It is split by concern; -the style configurations are in the `css`, images are in the `images` folder, etc. - -All translation files are in the `src/locale` folder. - -The environment defaults of the application are in the `src/environments` -folder. `environment.ts` is used for development purposes, the -`environment.prod.ts` for production, and the `environment.test.ts` for testing. - -In order to contribute: - -* Install [Nodejs](https://nodejs.org) -* Fork the Zonemaster GUI repository on Github into your own user on Github. -* Clone your fork to your working environment. -* Go to the folder and install project dependencies with `npm install` -* Update configuration files in `src/assets/app.config.json` to add a Backend - API endpoint (or leave the default) -* Make your changes, test them and push them to your fork on Github -* From your fork, make a Pull Request against the zonemaster/zonemaster-gui - repository. Please always make the Pull Request against the develop branch. -* Thank you for your contribution! - -#### Development server - -Run `npm start` for a dev server. Navigate to `http://localhost:4200/en`. -The app will automatically reload if you change any of the source files. - -#### Build - -Run `npm run build` to build the project. The build artifacts will be stored in the `dist/` directory. - -#### Test - -See [Testing](docs/Testing.md). +For contribution guidelines, see [CONTRIBUTE.md](CONTRIBUTE.md). ## License -This is free software under a 2-clause BSD license. The full text of the license can -be found in the [LICENSE](LICENSE) file included in this respository. +This is free software under a 2-clause BSD license. The full text of the license can be found in the [LICENSE](LICENSE) file included in this repository. -Images `src/assets/images/person_looking_at_computer.svg` and `src/assets/images/world_connected.svg` -are taken from , [full license](https://undraw.co/license). +Images `src/assets/images/person_looking_at_computer.svg` and `src/assets/images/world_connected.svg` are taken from , [full license](https://undraw.co/license). +Images `src/assets/images/person_looking_at_computer.svg` and `src/assets/images/world_connected.svg` are taken from , [full license](https://undraw.co/license). [Backend Configuration]: https://github.com/zonemaster/zonemaster/blob/master/docs/public/configuration/backend.md [GUI Configuration]: https://github.com/zonemaster/zonemaster/blob/master/docs/public/configuration/gui.md diff --git a/angular.json b/angular.json deleted file mode 100644 index a8adfc9e..00000000 --- a/angular.json +++ /dev/null @@ -1,206 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "zonemaster": { - "root": "", - "sourceRoot": "src", - "projectType": "application", - - "i18n": { - "sourceLocale": "en", - "locales": { - "da": { - "translation": "src/locale/messages.da.xlf" - }, - "es": { - "translation": "src/locale/messages.es.xlf" - }, - "fi": { - "translation": "src/locale/messages.fi.xlf" - }, - "fr": { - "translation": "src/locale/messages.fr.xlf" - }, - "nb": { - "translation": "src/locale/messages.nb.xlf" - }, - "sl": { - "translation": "src/locale/messages.sl.xlf" - }, - "sv": { - "translation": "src/locale/messages.sv.xlf" - } - } - }, - - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "allowedCommonJsDependencies": [ - "file-saver" - ], - "outputPath": "dist", - "index": "src/index.html", - "main": "src/main.ts", - "tsConfig": "src/tsconfig.app.json", - "polyfills": "src/polyfills.ts", - "assets": [ - "src/assets", - "src/.htaccess" - ], - "styles": [ - "node_modules/fork-awesome/css/fork-awesome.min.css", - "src/styles.scss" - ], - "scripts": [], - "aot": true, - "vendorChunk": true, - "extractLicenses": false, - "buildOptimizer": false, - "sourceMap": true, - "optimization": false, - "namedChunks": true - }, - "configurations": { - "tests": { - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.tests.ts" - } - ] - }, - "production": { - "localize": true, - "optimization": true, - "outputHashing": "all", - "sourceMap": false, - "namedChunks": false, - "aot": true, - "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ] - }, - "da": { - "localize": ["da"], - "baseHref": "/da/" - }, - "en": { - "localize": ["en"], - "baseHref": "/en/" - }, - "es": { - "localize": ["es"], - "baseHref": "/es/" - }, - "fi": { - "localize": ["fi"], - "baseHref": "/fi/" - }, - "fr": { - "localize": ["fr"], - "baseHref": "/fr/" - }, - "nb": { - "localize": ["nb"], - "baseHref": "/nb/" - }, - "sl": { - "localize": ["sl"], - "baseHref": "/sl/" - }, - "sv": { - "localize": ["sv"], - "baseHref": "/sv/" - } - }, - "defaultConfiguration": "en" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "options": { - "browserTarget": "zonemaster:build", - "proxyConfig": "proxy.conf.json" - }, - "configurations": { - "production": { - "proxyConfig": "proxy.disabled.conf.json", - "browserTarget": "zonemaster:build:production" - }, - "tests": { - "proxyConfig": "proxy.disabled.conf.json", - "browserTarget": "zonemaster:build:tests" - }, - "da": { - "browserTarget": "zonemaster:build:da" - }, - "en": { - "browserTarget": "zonemaster:build:en" - }, - "es": { - "browserTarget": "zonemaster:build:es" - }, - "fi": { - "browserTarget": "zonemaster:build:fi" - }, - "fr": { - "browserTarget": "zonemaster:build:fr" - }, - "nb": { - "browserTarget": "zonemaster:build:nb" - }, - "sl": { - "browserTarget": "zonemaster:build:sl" - }, - "sv": { - "browserTarget": "zonemaster:build:sv" - } - } - }, - "extract-i18n": { - "builder": "ng-extract-i18n-merge:ng-extract-i18n-merge", - "options": { - "browserTarget": "zonemaster:build", - "format": "xlf", - "outputPath": "src/locale", - "targetFiles": [ - "messages.da.xlf", - "messages.es.xlf", - "messages.fi.xlf", - "messages.fr.xlf", - "messages.nb.xlf", - "messages.sl.xlf", - "messages.sv.xlf" - ], - "includeContext": "sourceFileOnly" - } - } - } - } - }, - "defaultProject": "zonemaster", - "cli": { - "packageManager": "npm" - }, - "schematics": { - "@schematics/angular:class": { - "spec": false - }, - "@schematics/angular:component": { - "prefix": "app", - "styleext": "scss" - }, - "@schematics/angular:directive": { - "prefix": "app" - } - } -} diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 00000000..22f8894e --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,54 @@ +// @ts-check +import { defineConfig } from 'astro/config'; +import remarkGfm from 'remark-gfm'; +import { + remarkDefinitionList, + defListHastHandlers, +} from "remark-definition-list"; +import svelte from '@astrojs/svelte'; +import node from '@astrojs/node'; +import config from './src/config.js'; +import messagesPlugin, { messagesIntegration } from './scripts/messages-plugin.ts'; + +// https://astro.build/config +export default defineConfig({ + base: config.baseUrl, + trailingSlash: "always", + output: process.env.NODE_ENV === 'production' ? 'static' : 'server', + + outDir: './public/dist', + publicDir: './static', + + i18n: { + locales: config.enabledLanguages, + defaultLocale: config.defaultLanguage, + routing: { + prefixDefaultLocale: true + }, + }, + + markdown: { + remarkPlugins: [remarkGfm, remarkDefinitionList], + remarkRehype: { handlers: defListHastHandlers }, + }, + + integrations: [ + svelte({ + compilerOptions: { + customElement: true + } + }), + messagesIntegration() + ], + + vite: { + plugins: [messagesPlugin({ + defaultLanguage: config.defaultLanguage, + enabledLanguages: config.enabledLanguages, + })], + }, + + adapter: process.env.NODE_ENV === 'production' ? undefined : node({ + mode: 'standalone' + }), +}); diff --git a/compress.js b/compress.js deleted file mode 100644 index 40c4daf5..00000000 --- a/compress.js +++ /dev/null @@ -1,17 +0,0 @@ -const brotli = require('brotli') -const fs = require('fs') - -const brotliSettings = { - extension: 'br', - skipLarger: true, - mode: 1, // 0 = generic, 1 = text, 2 = font (WOFF2) - quality: 10, // 0 - 11, - lgwin: 12 // default -} - -fs.readdirSync('dist/').forEach(file => { - if (file.endsWith('.js') || file.endsWith('.css') || file.endsWith('.html')) { - const result = brotli.compress(fs.readFileSync('dist/' + file), brotliSettings) - fs.writeFileSync('dist/' + file + '.br', result) - } -}) diff --git a/config.ts b/config.ts new file mode 100644 index 00000000..dbbfd4fc --- /dev/null +++ b/config.ts @@ -0,0 +1,23 @@ +import type { Config } from '@/types.ts'; +import packageJson from './package.json'; + +const config: Config = { + defaultLanguage: 'en', + enabledLanguages: ['da', 'en', 'es', 'fi', 'fr', 'nb', 'sv', 'sl'], + baseUrl: import.meta.env.PUBLIC_BASE_URL || '/', + apiBaseUrl: import.meta.env.PUBLIC_API_URL || '/api', + pollingInterval: import.meta.env.PUBLIC_POLLING_INTERVAL || 5000, + clientInfo: { + version: packageJson.version, + id: 'Zonemaster-GUI', + }, + siteInfo: { + email: 'contact@zonemaster.net', + siteName: '', + }, + setTitle(title: string) { + return `${title} – Zonemaster`; + } +}; + +export default config; diff --git a/demo/demo.ts b/demo/demo.ts new file mode 100644 index 00000000..64918cd2 --- /dev/null +++ b/demo/demo.ts @@ -0,0 +1,24 @@ +import '../src/themes/default/styles/theme.css'; +import '../src/themes/default/styles/foundation.css'; +import '../src/assets/fonts/bootstrap-icons.min.css'; +import '../src/lib/styles/style.css'; +import { createTestAgent } from '../src/lib/main.ts'; + +const agent = createTestAgent(); +const button = document.getElementById('headless') as HTMLButtonElement; + +agent.subscribe((state, context) => { + if (state === 'testing') { + button.disabled = true; + button.innerText = `Testing...${context.progress}%`; + } else { + button.disabled = false; + button.innerText = 'Start test'; + } +}); + +button?.addEventListener('click', () => { + agent.transition('START', { + domain: 'zonemaster.net', + }); +}); diff --git a/demo/index.html b/demo/index.html new file mode 100644 index 00000000..0a65ec51 --- /dev/null +++ b/demo/index.html @@ -0,0 +1,17 @@ + + + + Zonemaster Lib Demo + + + + + + + + diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..8fee52fa --- /dev/null +++ b/docs/README.md @@ -0,0 +1,14 @@ +Zonemaster-GUI documents + +* An overview of the Zonemaster GUI is found in [Zonemaster UI] +* Information related to code testing is found in [Unit testing Zonemaster-GUI] +* [Installation instructions] +* [Configuration instructions] +* [Translation instructions] + + +[Configuration instructions]: https://github.com/zonemaster/zonemaster/blob/master/docs/public/configuration/gui/README.md +[Installation instructions]: https://doc.zonemaster.net/latest/installation/zonemaster-gui.html +[Unit testing Zonemaster-GUI]: Testing.md +[Translation instructions]: https://github.com/zonemaster/zonemaster/blob/master/docs/public/translation/Translating-GUI.md +[Zonemaster UI]: UI.md diff --git a/docs/Testing.md b/docs/Testing.md index 79b2f56d..5f8cf872 100644 --- a/docs/Testing.md +++ b/docs/Testing.md @@ -1,4 +1,6 @@ -# Testing +# Unit testing of Zonemaster-GUI + +_This guide refers to v4.* and is to be rewritten for v5.0._ ## Setup diff --git a/docs/TranslationGuide.md b/docs/TranslationGuide.md index ea3a2a91..5fde27c5 100644 --- a/docs/TranslationGuide.md +++ b/docs/TranslationGuide.md @@ -1,225 +1 @@ -# Translation Guide - -This guide gives instructions for how to add a new language to -Zonemaster-GUI. The language is assumed to exist in or to be added -to Zonemaster-Engine and Zonemaster-Backend. - -When updating a language in use, this document could also be used as -a checklist for where the changes are done. - -You should usually read this document from develop branch to make -sure you have the latest version. - -## Language code - -Zonemaster uses [ISO 639-1] two-letter language codes, normally in -lower case, but in GUI sometimes with first letter in upper case -to make the display nicer. GUI is currently available in the -following languages with the attached language code: - -* `da` for Danish language -* `en` for English language -* `es` for Spanish language -* `fi` for Finnish language -* `fr` for French language -* `nb` for Norwegian language -* `sv` for Swedish language - - -## Extracting translatable strings - -When adding new translatable strings to the GUI, they need to be added to each -`messages..xlf` file. This can be done with the following command: - -``` -npm run i18n:extract -``` - -This will update each file with the new strings; by default the target value -of new strings is an empty string. All new strings are appended to the end of -the files, obsolete strings are removed from the files. - - -## Submitting changes - -Below are instructions for how to add or modify files. Preferably, submit the -new or updated file as a pull request to Github (see [translators guide] for -Zonemaster-Engine, -CLI and -Backend). Contact the Zonemaster Group if that -does not work. - -The translator must always create or update the `messages..xlf`. The -other changes are only done when a language is added and will be completed -by the Zonemaster Group. - - -## messages.\.xlf - -The XLF files `messages..xlf` are XML files and contains the messages -for GUI in respective language, where `` is the language code, -e.g. `messages.fr.xlf`. - -The files are located in the [src/locale] folder, one file for each -supported language. - -Each language file contains a list of `` elements with a -`` element containing the message in English (the source locale), -and a `` element containing the translated message. Optionally a -`` element can contain context to help the translator. - -```xml - - About Zonemaster - À propos de Zonemaster - -``` - -To help translating the locale files, tools like [Poedit] can be used. - -### Poedit - -In Poedit, the translator can see the new strings to translated in an accent -color. Additional context for translation, if available, is shown in the -bottom left corner of the window under "Notes for translators". - -## Adding a new language - -The new language must be added to the following source files: - -* [angular.json], -* [src/environments/common.ts], -* [src/assets/app.config.sample.json], -* [zonemaster.conf-example]. - -and the following documentation file: - -* [GUI Configuration]. - -Then run `npm run i18n:extract` to create and populate the new -translation file. - -### angular.json - -In `angular.json` locate and update the following sections -* `/projects/zonemaster/i18n/locales`: add a new property named `` with a value of object having the `translation` property containing the path to the `messages..xlf` file; -* `/projects/architect/build/configurations`: add a new build configuration named ``, with a `localize` property set to an array containing the language code and a `baseHref` property set a URL prefix in the form `//`; -* `/projects/architect/serve/configurations`: add a new serve configuration baled ``, with a `browserTarget` set to the name of the build configuration created in the previous step, `zonemaster:build:`; -* `/projects/zonemaster/extract-i18n/options/targetFiles`: add the name of the translation file (`messages..xlf`) to the array. - -```jsonc -{ - // ... - "projects": { - "zonemaster" - // ... - "i18n": { - "locales": { - // ... - "": { - "translation": "src/locale/messages..xlf" - } - } - }, - "architect": { - "build": { - // ... - "configurations": { - // ... - "": { - "localize": [""], - "baseHref": "//" - } - } - }, - "serve": { - // ... - "configurations": { - // ... - "": { - "browserTarget": "zonemaster:build:" - } - } - }, - "extract-i18n": { - // ... - "options": { - // ... - "targetFiles": [ - // ... - "messages..xlf" - ], - } - } - } - } - }, - // ... -} -``` - -### common.ts - -In `common.ts` locate - -```js -languages: { - 'da': 'Dansk', - ... -} -``` -and append the new two-letter language code and the corresponding new -language name. - -Also locate -```js -enabledLanguages: ['da', ...] -``` -and append the new two-letter language code of the new language. - -### app.config.sample.json - -In `app.config.sample.json` locate - -```json -"enabledLanguages": ["da", ...] -``` -and append the new two-letter language code of the new language. - -### zonemaster.conf-example - -In the Apache example configuration, `zonemaster.conf-example`, update the rewrite -rules and conditions to add the new language. - -Identify the three places in `zonemaster.conf-example` where there is a list of -language codes. Currently you will find `da|en|es|fi|fr|nb|sv`. Add the two-letter -code of the new language following the same pattern. Preserve the alphabetical order -of the language codes. - -### Configuration - -Add the new language's two-letter code to the list of default values for -`"enabledLanguages"` in the [GUI Configuration] documentation file. - -## Add e2e test script for the language - -In `FR05.e2e-spec.ts` add a new test case in the `testSuite` array: - -```js -const testSuite = [ - ... - { language: 'New language name', code: 'two-letter code', expected: '`Domain name` translation in the new language' }, - ... - ]; -``` - - -[ISO 639-1]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes -[e2e]: ../e2e -[FR05-en.e2e-spec.ts]: ../e2e/FR05-en.e2e-spec.ts -[angular.json]: ../angular.json -[src/locale]: ../src/locale -[Translators guide]: https://github.com/zonemaster/zonemaster/blob/master/docs/internal/maintenance/Instructions-for-translators.md -[src/environments/common.ts]: ../src/environments/common.ts -[src/assets/app.config.sample.json]: ../src/assets/app.config.sample.json -[GUI Configuration]: https://github.com/zonemaster/zonemaster/blob/master/docs/public/configuration/gui.md -[zonemaster.conf-example]: ../zonemaster.conf-example -[Poedit]: https://poedit.net +Moved to [translation documents](https://github.com/zonemaster/zonemaster/blob/develop/docs/public/translation/README.md). diff --git a/docs/UI.md b/docs/UI.md new file mode 100644 index 00000000..f96c7611 --- /dev/null +++ b/docs/UI.md @@ -0,0 +1,54 @@ +# Zonemaster UI + +Zonemaster UI (Zonemaster-GUI) is a static website built with [Astro], using +[Svelte] for interactive components and [Paraglide] for internationalization +(i18n) or translation. + +## Standalone Components + +Zonemaster UI also provides a set of standalone web components that can be +reused in other projects. Currently, there are two available: + +- `` – for initiating domain tests +- `` – displays the current versions of Zonemaster + components + +These components are framework-agnostic and can be embedded in other websites or +apps as needed. + +```html + + + + +``` + +## Headless Mode + +Zonemaster UI can also be used in **headless mode**, where it acts as a +JavaScript API layer between the Zonemaster backend and your own frontend. + +This is useful if you want to: + +- Build your own custom UI +- Integrate Zonemaster functionality into another application or CLI tool + +In headless mode, the UI logic is decoupled from the visual components, allowing +you to access core functionality programmatically through JavaScript. + +```ts +import { TestAgent } from '@zonemaster/ui'; + +TestAgent.subscribe((state, context) => { + console.log(state, context); +}); + +TestAgent.transition('START', { domain: 'example.com' }); +``` + + +[Astro]: https://astro.build/ +[Svelte]: https://svelte.dev/ +[Paraglide]: https://paraglide.io/ diff --git a/e2e/FR01.e2e-spec.ts b/e2e/FR01.e2e-spec.ts index 979daf69..140423c7 100644 --- a/e2e/FR01.e2e-spec.ts +++ b/e2e/FR01.e2e-spec.ts @@ -1,4 +1,4 @@ -const { test, expect } = require('@playwright/test'); +import { test, expect } from './global-setup'; import { goToHome, setLang } from './utils/app.utils'; @@ -9,7 +9,6 @@ test.describe('Zonemaster test FR01 - [A Home button that sends the user to the }); test('should have a link to go to home page', async ({ page }) => { - await expect(page.locator('a.navbar-brand')).toHaveAttribute('href', '/en/'); - await expect(page.locator('a.navbar-brand')).toHaveAttribute('routerLink', '/'); + await expect(page.locator('a.zm-logo')).toHaveAttribute('href', '/en/'); }); }); diff --git a/e2e/FR02.e2e-spec.ts b/e2e/FR02.e2e-spec.ts index b279a5b0..bea9fe33 100644 --- a/e2e/FR02.e2e-spec.ts +++ b/e2e/FR02.e2e-spec.ts @@ -1,4 +1,4 @@ -const { test, expect } = require('@playwright/test'); +import { test, expect } from './global-setup'; import { goToHome, setLang } from './utils/app.utils'; @@ -9,13 +9,12 @@ test.describe('Zonemaster test FR02 - [All menus should be clickable in latest v }); test('should go to faq page', async ({ page, baseURL }) => { - await page.locator('a.nav-link[routerlink="/faq"]').click(); - await expect(page).toHaveURL(baseURL + '/en/faq'); + await page.locator('a.zm-menu__item[href="/en/faq/"]').click(); + await expect(page).toHaveURL(baseURL + '/en/faq/'); }); test('should go to domain page', async ({ page, baseURL }) => { - await page.locator('a.nav-link[routerlink="/run-test"]').click(); - await expect(page).toHaveURL(baseURL + '/en/run-test'); + await page.locator('a.zm-menu__item[href="/en/"]').click(); + await expect(page).toHaveURL(baseURL + '/en/'); }); - }); diff --git a/e2e/FR03.e2e-spec.ts b/e2e/FR03.e2e-spec.ts index 55551471..3cffbb4d 100644 --- a/e2e/FR03.e2e-spec.ts +++ b/e2e/FR03.e2e-spec.ts @@ -1,4 +1,4 @@ -const { test, expect } = require('@playwright/test'); +import { test, expect } from './global-setup'; import { goToHome, setLang, showOptions } from './utils/app.utils'; @@ -6,23 +6,31 @@ test.describe('Zonemaster test FR03 - [All appropriate fields should be writable test.beforeEach(async ({ page }) => { await goToHome(page); await setLang(page, 'en'); + await page.waitForLoadState('networkidle'); }); test('should be able to write in the main input', async ({ page }) => { const testString = 'afnic.fr'; - const domainInput = page.locator('#domain-input'); - await domainInput.type(testString); + const domainInput = page.locator('#zmDomainTestForm input[name="domain"]').first(); + + await domainInput.focus(); + await page.keyboard.type(testString); await expect(domainInput).toHaveValue(testString); await showOptions(page); + await page.waitForTimeout(400); + + const nsInput = page.locator('input[name="nameservers[0][ns]"]').first(); - const nsInput = page.locator('input[formControlName="ns"]').first(); - await nsInput.type(testString); + await nsInput.focus(); + await page.keyboard.type(testString); await expect(nsInput).toHaveValue(testString); - const keytagInput = page.locator('input[formControlName="keytag"]').first(); - await keytagInput.type(testString); + const keytagInput = page.locator('input[name="ds_info[0][keytag]"]').first(); + + await keytagInput.focus(); + await page.keyboard.type(testString); await expect(keytagInput).toHaveValue(testString); }); }); diff --git a/e2e/FR04.e2e-spec.ts b/e2e/FR04.e2e-spec.ts index 794bd23d..c07ce953 100644 --- a/e2e/FR04.e2e-spec.ts +++ b/e2e/FR04.e2e-spec.ts @@ -1,4 +1,4 @@ -const { test, expect } = require('@playwright/test'); +import { test, expect } from './global-setup'; import { goToHome, setLang } from './utils/app.utils'; diff --git a/e2e/FR05.e2e-spec.ts b/e2e/FR05.e2e-spec.ts index 0be847b4..be754961 100644 --- a/e2e/FR05.e2e-spec.ts +++ b/e2e/FR05.e2e-spec.ts @@ -1,4 +1,4 @@ -const { test, expect } = require('@playwright/test'); +import { test, expect } from './global-setup'; import { goToHome, setLang } from './utils/app.utils'; @@ -11,23 +11,23 @@ test.describe('Zonemaster test FR05 - [Supports internationalization]', () => { { language: 'Danish', code: 'da', expected: 'Domænenavn' }, { language: 'English', code: 'en', expected: 'Domain name' }, { language: 'Spanish', code: 'es', expected: 'Nombre de dominio' }, - { language: 'Finnish', code: 'fi', expected: 'Verkkotunnus' }, + { language: 'Finnish', code: 'fi', expected: 'Verkkotunnuksen nimi' }, { language: 'French', code: 'fr', expected: 'Nom de domaine' }, { language: 'Norwegian', code: 'nb', expected: 'Domenenavn' }, - { language: 'Slovenian', code: 'sl', expected: 'Domena' }, - { language: 'Swedish', code: 'sv', expected: 'Domännamn' }, + { language: 'Swedish', code: 'sv', expected: 'Domänamn' }, + { language: 'Slovenian', code: 'sl', expected: 'Ime domene' }, ]; for (const { language, code, expected } of testSuite) { test(`should have ${language} language option`, async ({ page }) => { - const langNavLink = page.locator(`select#languageSelection > option[lang="${code}"]`); + const langNavLink = page.locator(`select#languageSwitcher > option[lang="${code}"]`); await expect(langNavLink).toHaveCount(1); await expect(langNavLink).toHaveAttribute('lang', code); }) test(`should switch to ${language}`, async ({ page }) => { await setLang(page, code); - await expect(page.locator('label[for="domain-input"]')).toHaveText(expected); + await expect(page.locator('input[name="domain"]')).toHaveAttribute('placeholder', expected); }) } }); diff --git a/e2e/FR08.e2e-spec.ts b/e2e/FR08.e2e-spec.ts index 5c483c4f..d52b9090 100644 --- a/e2e/FR08.e2e-spec.ts +++ b/e2e/FR08.e2e-spec.ts @@ -1,4 +1,4 @@ -const { test, expect } = require('@playwright/test'); +import { test, expect } from './global-setup'; import { goToHome, clearBrowserCache } from './utils/app.utils'; @@ -9,6 +9,6 @@ test.describe('Zonemaster test FR08 - [Presence of a default fallback language - }); test('should have a fallback language - English', async ({ page }) => { - await expect(page.locator('label[for="domain-input"]')).toHaveText('Domain name'); + await expect(page.locator('input[name="domain"]')).toHaveAttribute('placeholder', 'Domain name'); }); }); diff --git a/e2e/FR09.e2e-spec.ts b/e2e/FR09.e2e-spec.ts index e40009f2..1f16e077 100644 --- a/e2e/FR09.e2e-spec.ts +++ b/e2e/FR09.e2e-spec.ts @@ -1,17 +1,17 @@ -const { test, expect } = require('@playwright/test'); +import {test, expect} from './global-setup'; -import { goToHome, setLang } from './utils/app.utils'; +import {goToHome, setLang} from './utils/app.utils'; test.describe('Zonemaster test FR09 - [Once a language is chosen, all other links should open in that respective language]', () => { - test.beforeEach(async ({ page })=> { - await goToHome(page); - await setLang(page, 'fr'); - }); + test.beforeEach(async ({page}) => { + await goToHome(page); + await setLang(page, 'fr'); + }); - test('should keep french when opening faq page', async ({ page }) => { - await expect(page.locator('label[for="domain-input"]')).toHaveText('Nom de domaine'); - await page.locator('a.nav-link[routerlink="/faq"]').click(); - await expect(page.locator('main h1')).toHaveText('Questions fréquentes'); - await expect(page.locator('a.nav-link[routerlink="/run-test"]')).toHaveText("Lancer un test"); - }); + test('should keep french when opening faq page', async ({page}) => { + await expect(page.locator('input[name="domain"]')).toHaveAttribute('placeholder', 'Nom de domaine'); + await page.goto('/fr/faq/'); + await expect(page.locator('main h1')).toHaveText('Questions fréquentes'); + await expect(page.locator('a.zm-menu__item[href$="/fr/"]')).toHaveText("Démarrer un test"); + }); }); diff --git a/e2e/FR10.e2e-spec.ts b/e2e/FR10.e2e-spec.ts index efb4c989..9a269ff9 100644 --- a/e2e/FR10.e2e-spec.ts +++ b/e2e/FR10.e2e-spec.ts @@ -1,6 +1,6 @@ -const { test, expect } = require('@playwright/test'); +import { test, expect } from './global-setup'; -import { goToHome, clearBrowserCache, showOptions } from './utils/app.utils'; +import { goToHome, clearBrowserCache } from './utils/app.utils'; test.describe('Zonemaster test FR10 - [On launching the URL opens with a default simple view]', () => { test.beforeEach(async ({ page }) => { @@ -13,17 +13,12 @@ test.describe('Zonemaster test FR10 - [On launching the URL opens with a default }); test('should have [Options] label visible and NOT selected', async ({ page }) => { - await expect(page.locator('#advanced-toggle', { hasText: 'Show options' })).toBeVisible(); - - await expect(page.locator('#advanced-options')).not.toHaveAttribute('open'); + await expect(page.locator('#advanced-toggle-label', { hasText: 'Show options' })).toBeVisible(); + await expect(page.locator('#advanced-toggle')).toHaveAttribute('aria-expanded', 'false'); }); - test('should have [Nameservers label] NOT visible', async ({ page }) => { - await expect(page.locator('legend', { hasText: 'Nameservers'})).toBeHidden(); - }); - - test('should have [DS records label] NOT visible', async ({ page }) => { - await expect(page.locator('legend', { hasText: 'DS records'})).toBeHidden(); + test('should have options NOT visible', async ({ page }) => { + await expect(page.locator('#advanced-options')).toHaveAttribute('hidden'); }); }); diff --git a/e2e/FR11.e2e-spec.ts b/e2e/FR11.e2e-spec.ts index e5776a0a..bc42d639 100644 --- a/e2e/FR11.e2e-spec.ts +++ b/e2e/FR11.e2e-spec.ts @@ -1,19 +1,22 @@ -const { test, expect } = require('@playwright/test'); - -import { goToHome, setLang, showOptions } from './utils/app.utils'; +import { test, expect } from './global-setup'; +import { closeOptions, goToHome, setLang, showOptions } from './utils/app.utils'; test.describe('Zonemaster test FR11 - [The simple view should look the same in latest version of different browsers]', () => { - test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); - }); + test.beforeEach(async ({ page }) => { + await goToHome(page); + await setLang(page, 'en'); + await page.waitForLoadState('networkidle'); + }); - test('should match the domain page', async ({ page}) => { - expect(await page.screenshot()).toMatchSnapshot('domain.png'); - }); + test('should match the domain page', async ({ page }) => { + await closeOptions(page); + await page.waitForTimeout(400); + expect(await page.screenshot()).toMatchSnapshot('domain.png'); + }); - test('should not match the domain page', async({ page }) => { - await showOptions(page); - expect(await page.screenshot()).not.toMatchSnapshot('domain.png'); - }); + test('should not match the domain page', async ({ page }) => { + await showOptions(page); + await page.waitForTimeout(400); + expect(await page.screenshot()).toMatchSnapshot('domain-options.png'); + }); }); diff --git a/e2e/FR11.e2e-spec.ts-snapshots/domain-chromium-linux.png b/e2e/FR11.e2e-spec.ts-snapshots/domain-chromium-linux.png index bea6a8b2..c38b43e4 100644 Binary files a/e2e/FR11.e2e-spec.ts-snapshots/domain-chromium-linux.png and b/e2e/FR11.e2e-spec.ts-snapshots/domain-chromium-linux.png differ diff --git a/e2e/FR11.e2e-spec.ts-snapshots/domain-options-chromium-linux.png b/e2e/FR11.e2e-spec.ts-snapshots/domain-options-chromium-linux.png new file mode 100644 index 00000000..59b6a7c8 Binary files /dev/null and b/e2e/FR11.e2e-spec.ts-snapshots/domain-options-chromium-linux.png differ diff --git a/e2e/FR11.e2e-spec.ts-snapshots/domain-options.png b/e2e/FR11.e2e-spec.ts-snapshots/domain-options.png new file mode 100644 index 00000000..1d0b35b7 Binary files /dev/null and b/e2e/FR11.e2e-spec.ts-snapshots/domain-options.png differ diff --git a/e2e/FR11.e2e-spec.ts-snapshots/domain.png b/e2e/FR11.e2e-spec.ts-snapshots/domain.png new file mode 100644 index 00000000..daa716fa Binary files /dev/null and b/e2e/FR11.e2e-spec.ts-snapshots/domain.png differ diff --git a/e2e/FR12.e2e-spec.ts b/e2e/FR12.e2e-spec.ts index b709f2c4..cdf2cb1a 100644 --- a/e2e/FR12.e2e-spec.ts +++ b/e2e/FR12.e2e-spec.ts @@ -1,21 +1,22 @@ -const { test, expect } = require('@playwright/test'); +import {test, expect} from './global-setup'; -import { goToHome, setLang, showOptions } from './utils/app.utils'; +import {goToHome, setLang, showOptions} from './utils/app.utils'; test.describe('Zonemaster test FR12 - [The simple view should support an advanced view expanding when the checkbox is enabled]', () => { - test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); - }); + test.beforeEach(async ({page}) => { + await goToHome(page); + await setLang(page, 'en'); + await page.waitForLoadState('networkidle'); + }); - test('should have [Disable IPv4 checkbox] && [Disable IPv6 checkbox] NOT visible', async ({ page }) => { - await expect(page.locator('label[for="disable_protocol_ipv4"]')).toBeHidden(); - await expect(page.locator('label[for="disable_protocol_ipv6"]')).toBeHidden(); - }); + test('should have [Disable IPv4 checkbox] && [Disable IPv6 checkbox] NOT visible', async ({page}) => { + await expect(page.locator('#advanced-options')).toHaveAttribute('hidden'); + }); - test('should have [Disable IPv4 checkbox] & [Disable IPv6 checkbox] visible', async ({ page }) => { - await showOptions(page); - await expect(page.locator('label[for="disable_protocol_ipv4"]')).toBeVisible(); - await expect(page.locator('label[for="disable_protocol_ipv6"]')).toBeVisible(); - }); + test('should have [IPv4 and IPv6 radio] & [IPv4 only radio] & [IPv6 only radio] visible', async ({page}) => { + await showOptions(page); + await expect(page.locator('input[name="iptype"][value="both"]')).toBeVisible(); + await expect(page.locator('input[name="iptype"][value="ipv4"]')).toBeVisible(); + await expect(page.locator('input[name="iptype"][value="ipv6"]')).toBeVisible(); + }); }); diff --git a/e2e/FR13.e2e-spec.ts b/e2e/FR13.e2e-spec.ts index c873eebe..e5cfe240 100644 --- a/e2e/FR13.e2e-spec.ts +++ b/e2e/FR13.e2e-spec.ts @@ -1,54 +1,36 @@ -const { test, expect } = require('@playwright/test'); +import {test, expect} from './global-setup'; -import { goToHome, setLang, showOptions } from './utils/app.utils'; +import {goToHome, setLang, showOptions} from './utils/app.utils'; test.describe.serial('Zonemaster test FR13 - [The advanced view should support the possibility of enabling or disabling IPv4 or IPv6]', () => { - let page; - - // Keep the same page between tests - test.beforeAll(async ({ browser }) => { - page = await browser.newPage(); - await goToHome(page); - await setLang(page, 'en'); - await showOptions(page); - }); - - test('should have [Disable IPv4 checkbox] visible and disabled', async () => { - await expect(page.locator('#disable_protocol_ipv4')).toBeVisible(); - await expect(page.locator('#disable_protocol_ipv4')).not.toBeChecked(); - }); - - test('should be possible to enable [Disable IPv4 checkbox]', async () => { - await page.locator('label[for="disable_protocol_ipv4"]').click(); - await expect(page.locator('#disable_protocol_ipv4')).toBeChecked(); - }); - - test('should be possible to disable [Disable IPv4 checkbox]', async () => { - await page.locator('label[for="disable_protocol_ipv4"]').click(); - await expect(page.locator('#disable_protocol_ipv4')).not.toBeChecked(); - }); - - test('should have [Disable IPv6 checkbox] visible and disabled', async () => { - await expect(page.locator('#disable_protocol_ipv6')).toBeVisible(); - await expect(page.locator('#disable_protocol_ipv6')).not.toBeChecked(); - }); - - test('should be possible to enable [Disable IPv6 checkbox]', async () => { - await page.locator('label[for="disable_protocol_ipv6"]').click(); - await expect(page.locator('#disable_protocol_ipv6')).toBeChecked(); - }); - - test('should be possible to disable [Disable IPv6 checkbox]', async () => { - await page.locator('label[for="disable_protocol_ipv6"]').click(); - await expect(page.locator('#disable_protocol_ipv6')).not.toBeChecked(); - }); - - test('should show alert when both are disabled', async () => { - await page.locator('label[for="disable_protocol_ipv4"]').click() - await page.locator('label[for="disable_protocol_ipv6"]').click() - - const alert = page.locator('#protocol-error'); - await expect(alert).toBeVisible(); - await expect(alert).toHaveText(' Cannot disable both IPv4 and IPv6'); - }); + test.beforeEach(async ({page}) => { + await goToHome(page); + await setLang(page, 'en'); + await page.waitForLoadState('networkidle'); + await showOptions(page); + await page.waitForTimeout(400); + }); + + test('should have [IPv4 and IPv6 radio] & [IPv4 only radio] & [IPv6 only radio] visible and disabled', async ({page}) => { + await showOptions(page); + await page.waitForTimeout(400); + await expect(page.locator('input[name="iptype"][value="both"]')).toBeVisible(); + await expect(page.locator('input[name="iptype"][value="ipv4"]')).not.toBeChecked(); + await expect(page.locator('input[name="iptype"][value="ipv6"]')).not.toBeChecked(); + }); + + test('should be possible to enable [IPv4 only radio]', async ({page}) => { + await page.locator('input[name="iptype"][value="ipv4"]').click(); + await expect(page.locator('input[name="iptype"][value="ipv4"]')).toBeChecked(); + }); + + test('should have [IPv6 only radio] visible and disabled', async ({ page }) => { + await expect(page.locator('input[name="iptype"][value="ipv6"]')).toBeVisible(); + await expect(page.locator('input[name="iptype"][value="ipv6"]')).not.toBeChecked(); + }); + + test('should be possible to enable [IPv6 only]', async ({ page }) => { + await page.locator('input[name="iptype"][value="ipv6"]').click(); + await expect(page.locator('input[name="iptype"][value="ipv6"]')).toBeChecked(); + }); }); diff --git a/e2e/FR14.e2e-spec.ts b/e2e/FR14.e2e-spec.ts deleted file mode 100644 index b5ba4bd5..00000000 --- a/e2e/FR14.e2e-spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -const { test, expect } = require('@playwright/test'); - -import { goToHome, setLang, showOptions } from './utils/app.utils'; - -test.describe('Zonemaster test FR14 - [The advanced view should support the possibility of choosing a profile from multiple profiles]', () => { - test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); - await showOptions(page); - }); - - - test('should have an select form with at least one choice (default)', async ({ page }) => { - const selectForm = page.locator('select#profile'); - await expect(selectForm).toBeVisible(); - await expect(selectForm.locator('option').nth(0)).toHaveAttribute('value', 'default'); - }); -}); diff --git a/e2e/FR15.e2e-spec.ts b/e2e/FR15.e2e-spec.ts deleted file mode 100644 index 11124410..00000000 --- a/e2e/FR15.e2e-spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -const { test, expect } = require('@playwright/test'); - -import { goToHome, setLang, showOptions } from './utils/app.utils'; - -test.describe('Zonemaster test FR15 - [The advanced view should look the same in latest version of different browsers]', () => { - test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); - }); - - test('should match the domain page with options on', async ({ page}) => { - await showOptions(page); - // Force wait 0.4s, for the button icon animation to finish - await page.waitForTimeout(400); - expect(await page.screenshot()).toMatchSnapshot('domain_with_options.png'); - }); - - test('should not match the domain page with options off', async({ page }) => { - expect(await page.screenshot()).not.toMatchSnapshot('domain_with_options.png'); - }); -}); diff --git a/e2e/FR15.e2e-spec.ts-snapshots/domain-with-options-chromium-linux.png b/e2e/FR15.e2e-spec.ts-snapshots/domain-with-options-chromium-linux.png deleted file mode 100644 index 48819fca..00000000 Binary files a/e2e/FR15.e2e-spec.ts-snapshots/domain-with-options-chromium-linux.png and /dev/null differ diff --git a/e2e/FR16.e2e-spec.ts b/e2e/FR16.e2e-spec.ts index 01b504f2..4c24d21d 100644 --- a/e2e/FR16.e2e-spec.ts +++ b/e2e/FR16.e2e-spec.ts @@ -1,32 +1,38 @@ -const { test, expect } = require('@playwright/test'); +import {test, expect} from './global-setup'; -import { goToHome, setLang, showOptions } from './utils/app.utils'; +import {goToHome, mounted, setLang, showOptions} from './utils/app.utils'; test.describe('Zonemaster test FR16 - [The advanced view should have a text describing what undelegated means]', () => { - test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); - await showOptions(page); - }); + test.beforeEach(async ({page}) => { + await goToHome(page); + await setLang(page, 'en'); + await mounted(page); + await showOptions(page); + }); - test('should have a link to the proper faq answer', async ({ page }) => { - const alert = page.locator('#advanced-options aside .alert'); - await expect(alert).toBeVisible(); - await expect(alert.locator('a')).toHaveAttribute('routerlink', '/faq'); - await expect(alert.locator('a')).toHaveAttribute('fragment', 'what-is-an-undelegated-domain-test'); - }); + test('should have a link to the proper faq answer', async ({page}) => { + await page.waitForTimeout(400); + const alert = page.locator('#advanced-options div[role="alert"]'); + await expect(alert).toBeVisible(); + await expect(alert.locator('a')).toHaveAttribute('href', '/en/faq/#undelegated'); + }); - test('should have a description text in multi languages', async ({ page }) => { - const testSuite = [ - { lang: 'en', text: 'undelegated' }, - { lang: 'fr', text: 'non délégué' }, - { lang: 'sv', text: 'odelegerat domäntest' }, - ]; + test('should have a description text in multi languages', async ({page}) => { + const testSuite = [ + {lang: 'en', text: 'undelegated'}, + {lang: 'fr', text: 'non délégué'}, + {lang: 'sv', text: 'odelegerat'}, + ]; - for (const {lang, text} of testSuite) { - await setLang(page, lang); - await showOptions(page); - await expect(page.locator('#advanced-options aside .alert a')).toContainText(text); - } - }); + for (const {lang, text} of testSuite) { + await setLang(page, lang); + await mounted(page); + await showOptions(page); + await page.waitForTimeout(400); + + const alert = page.locator('#advanced-options div[role="alert"]'); + + await expect(alert.locator('a')).toContainText(text); + } + }); }); diff --git a/e2e/FR17.e2e-spec.ts b/e2e/FR17.e2e-spec.ts index 58cdfb23..5ab886a2 100644 --- a/e2e/FR17.e2e-spec.ts +++ b/e2e/FR17.e2e-spec.ts @@ -1,39 +1,49 @@ -const { test, expect } = require('@playwright/test'); +import {test, expect} from './global-setup'; -import { goToHome, setLang, showOptions } from './utils/app.utils'; +import {goToHome, setLang, showOptions} from './utils/app.utils'; test.describe.serial('Zonemaster test FR17 - [Able to specify delegation parameters]', () => { - let page; - - // Keep the same page between tests - test.beforeAll(async ({ browser }) => { - page = await browser.newPage(); - await goToHome(page); - await setLang(page, 'en'); - await showOptions(page); - }); - - test('should have one ns and digest form', async () => { - await expect(page.locator('div[formArrayName] fieldset')).toHaveCount(2); - await expect(page.locator('input[formControlName="keytag"]')).toHaveCount(1); - await expect(page.locator('input[formControlName="ns"]')).toHaveCount(1); - }); - - test('should be possible to add new ns form', async () => { - await page.locator('input[formControlName="ns"]').first().type('test'); - await expect(page.locator('input[formControlName="ns"]')).toHaveCount(2); - await expect(page.locator('input[formControlName="keytag"]')).toHaveCount(1); - }); - - test('should be possible to add new digest form', async () => { - await page.locator('input[formControlName="keytag"]').first().type('1234'); - await expect(page.locator('input[formControlName="ns"]')).toHaveCount(2); - await expect(page.locator('input[formControlName="keytag"]')).toHaveCount(2); - }); - - test('should be possible to delete ns forms', async () => { - await page.locator('div[formArrayName="nameservers"] fieldset:first-child button.delete').click(); - await expect(page.locator('input[formControlName="ns"]')).toHaveCount(1); - await expect(page.locator('input[formControlName="keytag"]')).toHaveCount(2); - }); + test.beforeEach(async ({page}) => { + await goToHome(page); + await setLang(page, 'en'); + await page.waitForLoadState('networkidle'); + await showOptions(page); + await page.waitForTimeout(400); + }); + + test('should have one ns and digest form', async ({ page }) => { + await expect(page.locator('fieldset.zm-domain-test__nameservers')).toHaveCount(1); + await expect(page.locator('fieldset.zm-domain-test__records')).toHaveCount(1); + await expect(page.locator('input[name="nameservers[0][ns]"]')).toHaveCount(1); + await expect(page.locator('input[name="ds_info[0][keytag]"]')).toHaveCount(1); + }); + + test('should be possible to add new ns form', async ({ page }) => { + await page.locator('input[name="nameservers[0][ns]"]').first().focus(); + + await page.keyboard.type('ns2.nic.fr'); + + await expect(page.locator('input[name="nameservers[1][ns]"]')).toHaveCount(1); + await expect(page.locator('input[name="ds_info[1][keytag]"]')).toHaveCount(0); + }); + + test('should be possible to add new digest form', async ({ page }) => { + await page.locator('input[name="ds_info[0][keytag]"]').first().focus(); + + await page.keyboard.type('12345'); + + await expect(page.locator('input[name="nameservers[1][ns]"]')).toHaveCount(0); + await expect(page.locator('input[name="ds_info[1][keytag]"]')).toHaveCount(1); + }); + + test('should be possible to delete ns forms', async ({ page }) => { + await page.locator('input[name="nameservers[0][ns]"]').first().focus(); + + await page.keyboard.type('ns2.nic.fr'); + + await expect(page.locator('input[name="nameservers[1][ns]"]')).toHaveCount(1); + + await page.locator('fieldset.zm-domain-test__nameserver > div > div > button').first().click(); + await expect(page.locator('input[name="nameservers[1][ns]"]')).toHaveCount(0); + }); }); diff --git a/e2e/FR18.e2e-spec.ts b/e2e/FR18.e2e-spec.ts index e39f80f7..09297475 100644 --- a/e2e/FR18.e2e-spec.ts +++ b/e2e/FR18.e2e-spec.ts @@ -1,17 +1,22 @@ -const { test, expect } = require('@playwright/test'); +import {test, expect} from './global-setup'; -import { goToHome, setLang } from './utils/app.utils'; +import {goToHome, setLang} from './utils/app.utils'; test.describe('Zonemaster test FR18 - [The GUI should be able to run tests by just providing the domain name]', () => { - test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); - }); + test.beforeEach(async ({page}) => { + await goToHome(page); + await setLang(page, 'en'); + }); - test('should display progress bar', async ({ page }) => { - await expect(page.locator('.progress-bar')).toBeHidden(); - await page.locator('#domain-input').type('progress.afNiC.Fr'); - await page.locator('div button.launch').click(); - await expect(page.locator('.progress-bar')).toBeVisible({ timeout: 10000}); - }); + test('should display progress bar', async ({page}) => { + await page.waitForLoadState('networkidle'); + + await expect(page.locator('.zm-domain-test__progress-bar')).toHaveCount(0); + await page.locator('input[name="domain"]').first().focus(); + + await page.keyboard.type('progress.afNiC.Fr'); + await page.keyboard.press('Enter'); + + await expect(page.locator('.zm-domain-test__progress-bar')).toHaveCount(1); + }); }); diff --git a/e2e/FR19.e2e-spec.ts b/e2e/FR19.e2e-spec.ts index 3db3dc96..23d218db 100644 --- a/e2e/FR19.e2e-spec.ts +++ b/e2e/FR19.e2e-spec.ts @@ -1,36 +1,41 @@ -const { test, expect } = require('@playwright/test'); +import {test, expect} from './global-setup'; -import { goToHome, setLang, showOptions } from './utils/app.utils'; +import {goToHome, setLang, showOptions} from './utils/app.utils'; test.describe('Zonemaster test FR19 - [The GUI should be able to run the test with at least one name server as input]', () => { - test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); - await showOptions(page); - }); - - test('should NOT display progress bar when we add a NS ip', async ({ page }) => { - await expect(page.locator('.progress-bar')).toBeHidden(); - await page.locator('#domain-input').type('progress.afNiC.Fr'); - await page.locator('input[formControlName="ip"]').type('192.134.4.1'); - await page.locator('div button.launch').click(); - - // Error message visible to the user - await expect(page.locator('input[formControlName="ns"] ~ .invalid-feedback')).toBeVisible(); - await expect(page.locator('input[formControlName="ns"] ~ .invalid-feedback')).toContainText('required'); - - try { - await expect(page.locator('.progress-bar')).toBeVisible(); - } catch {} - - await expect(page.locator('.progress-bar')).toBeHidden(); - }); - - test('should display progress bar when we add a NS name', async ({ page }) => { - await expect(page.locator('.progress-bar')).toBeHidden(); - await page.locator('#domain-input').type('progress.afNiC.Fr'); - await page.locator('input[formControlName="ns"]').type('ns1.nic.fr'); - await page.locator('div button.launch').click(); - await expect(page.locator('.progress-bar')).toBeVisible({ timeout: 10000 }); - }); + test.beforeEach(async ({page}) => { + await goToHome(page); + await setLang(page, 'en'); + await page.waitForLoadState('networkidle'); + await showOptions(page); + }); + + test('should NOT display progress bar when we add a NS ip', async ({page}) => { + await expect(page.locator('.zm-domain-test__progress-bar')).toHaveCount(0); + + await page.locator('input[name="domain"]').first().focus(); + await page.keyboard.type('progress.afNiC.Fr'); + + await page.locator('input[name="nameservers[0][ip]"]').first().focus(); + await page.keyboard.type('192.134.4.1'); + + await page.keyboard.press('Enter'); + + await expect(page.locator('input[name="nameservers[0][ns]"]:invalid')).toHaveCount(1); + await expect(page.locator('.zm-domain-test__progress-bar')).toHaveCount(0); + }); + + test('should display progress bar when we add a NS name', async ({page}) => { + await expect(page.locator('.zm-domain-test__progress-bar')).toHaveCount(0); + + await page.locator('input[name="domain"]').first().focus(); + await page.keyboard.type('progress.afNiC.Fr'); + + await page.locator('input[name="nameservers[0][ns]"]').first().focus(); + await page.keyboard.type('ns1.nic.fr'); + + await page.keyboard.press('Enter'); + + await expect(page.locator('.zm-domain-test__progress-bar')).toHaveCount(1); + }); }); diff --git a/e2e/FR20.e2e-spec.ts b/e2e/FR20.e2e-spec.ts index 5e305eac..f083aca8 100644 --- a/e2e/FR20.e2e-spec.ts +++ b/e2e/FR20.e2e-spec.ts @@ -1,26 +1,32 @@ -const { test, expect } = require('@playwright/test'); +import {test, expect} from './global-setup'; -import { goToHome, setLang, showOptions } from './utils/app.utils'; +import {goToHome, setLang, showOptions} from './utils/app.utils'; test.describe('Zonemaster test FR20 - [The user must be able to submit one or more DS record(s) for use with DNSSEC]', () => { - test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); - await showOptions(page); - }); + test.beforeEach(async ({page}) => { + await goToHome(page); + await setLang(page, 'en'); + await page.waitForLoadState('networkidle'); + await showOptions(page); + }); - test('should display progress bar when we add a DS entry and launch a test', async ({ page }) => { - await expect(page.locator('.progress-bar')).toBeHidden(); + test('should display progress bar when we add a DS entry and launch a test', async ({page}) => { + await expect(page.locator('.zm-domain-test__progress-bar')).toHaveCount(0); - await page.locator('#domain-input').type('progress.afNiC.Fr'); + await page.locator('input[name="domain"]').first().focus(); - await page.locator('input[formControlName="keytag"]').first().type('37610'); - await page.locator('input[formControlName="digest"]').first().type('d2681e301f632bd76544e6d5b6631a12d97b5479ff07cd24efecd19203c77db3'); + await page.keyboard.type('progress.afNiC.Fr'); - await page.locator('select[formControlName="algorithm"]').first().selectOption({ label: '8 - RSASHA256'}); - await page.locator('select[formControlName="digtype"]').first().selectOption({ label: '2 - SHA-256'}); + await page.locator('input[name="ds_info[0][keytag]"]').first().focus(); + await page.keyboard.type('37610'); - await page.locator('div button.launch').click(); - await expect(page.locator('.progress-bar')).toBeVisible({ timeout: 10000 }); - }); + await page.locator('input[name="ds_info[0][digest]"]').first().focus(); + await page.keyboard.type('d2681e301f632bd76544e6d5b6631a12d97b5479ff07cd24efecd19203c77db3'); + + await page.locator('select[name="ds_info[0][algorithm]"]').first().selectOption({ label: '8 - RSASHA256' }); + await page.locator('select[name="ds_info[0][digtype]"]').first().selectOption({ label: '2 - SHA-256' }); + + await page.keyboard.press('Enter'); + await expect(page.locator('.zm-domain-test__progress-bar')).toHaveCount(1); + }); }); diff --git a/e2e/FR21.e2e-spec.ts b/e2e/FR21.e2e-spec.ts index a3363941..0f0815e0 100644 --- a/e2e/FR21.e2e-spec.ts +++ b/e2e/FR21.e2e-spec.ts @@ -1,58 +1,55 @@ -const { test, expect } = require('@playwright/test'); - -import { goToHome, setLang, showOptions, clearBrowserCache } from './utils/app.utils'; +import { test, expect } from './global-setup'; +import { goToHome, setLang, setupApiMocks } from './utils/app.utils'; +import type { Page } from '@playwright/test'; test.describe.serial('Zonemaster test FR21 - [Able to provide a summarized result of the test being run ' + - '(possibility in different colours for error, warning, success etc.)]', () => { + '(possibility in different colours for error, warning, success etc.)]', () => { - let page; + let page: Page; - // Keep the same page between tests - test.beforeAll(async ({ browser }) => { - page = await browser.newPage(); - await goToHome(page); - await setLang(page, 'en'); - await clearBrowserCache(page); - await showOptions(page); - }); + // Keep the same page between tests + test.beforeAll(async ({ browser }) => { + page = await browser.newPage(); + await setupApiMocks(page); + await goToHome(page); + await setLang(page, 'en'); + await page.waitForLoadState('networkidle'); + }); - test('should display summary', async () => { - await expect(page.locator('.progress-bar')).toBeHidden(); - await page.locator('#domain-input').type('results.afNiC.Fr'); - await page.locator('div button.launch').click(); + test('should display summary', async () => { + await expect(page.locator('.zm-domain-test__progress-bar')).toHaveCount(0); + await page.locator('input[name="domain"]').first().focus(); - await expect(page.locator('section.result')).toBeVisible({ timeout: 10000 }); + await page.keyboard.type('results.afNiC.Fr'); + await page.keyboard.press('Enter'); - const messageCountBadges = page.locator('fieldset.severity-levels label'); - const expectedLabels = ['All', 'Info', 'Notice', 'Warning', 'Error', 'Critical']; + await expect(page.locator('.zm-result')).toBeVisible({ timeout: 10000 }); - await expect(messageCountBadges).toHaveCount(expectedLabels.length); + const messageCountBadges = page.locator('.zm-filter-toggle'); + const expectedLabels = ['All', 'Info', 'Notice', 'Warning', 'Error', 'Critical']; - for (const idx in expectedLabels) { - await expect(messageCountBadges.nth(idx)).toContainText(expectedLabels[idx]); - } - }); + await expect(messageCountBadges).toHaveCount(expectedLabels.length); - test('should display number of each level', async () => { - const expectedCounts = ['52', '49', '3', '0', '0', '0']; - const messageCountBadges = page.locator('fieldset.severity-levels label span.badge'); + for (const [idx, label] of expectedLabels.entries()) { + await expect(messageCountBadges.nth(idx)).toContainText(label); + } + }); - for (const idx in expectedCounts) { - await expect(messageCountBadges.nth(idx)).toHaveText(expectedCounts[idx]); - } - }); + test('should display number of each level', async () => { + await expect(page.locator('.zm-filter-toggle__badge:not(:empty)')).toHaveCount(6); + }); - test('should display summary with good colors', async () => { - const filterButtons = page.locator('fieldset.severity-levels input[type="checkbox"]'); + test('should display summary with good colors', async () => { + const filterButtons = page.locator('.zm-filter-toggle input[type="checkbox"]'); - for (const idx of [1, 2, 3, 4, 5]) { - await filterButtons.nth(idx).click(); - } + for (const idx of [1, 2, 3, 4, 5]) { + await filterButtons.nth(idx).click(); + } - // wait for .2 second (color transition) - await page.waitForTimeout(200); + // wait for .2 second (color transition) + await page.waitForTimeout(200); - expect(await page.screenshot()).toMatchSnapshot('results.png'); - }); + expect(await page.screenshot()).toMatchSnapshot('results.png'); + }); }); diff --git a/e2e/FR21.e2e-spec.ts-snapshots/results-chromium-linux.png b/e2e/FR21.e2e-spec.ts-snapshots/results-chromium-linux.png index b1c407ce..69074e5f 100644 Binary files a/e2e/FR21.e2e-spec.ts-snapshots/results-chromium-linux.png and b/e2e/FR21.e2e-spec.ts-snapshots/results-chromium-linux.png differ diff --git a/e2e/FR21.e2e-spec.ts-snapshots/results.png b/e2e/FR21.e2e-spec.ts-snapshots/results.png new file mode 100644 index 00000000..8bc841a9 Binary files /dev/null and b/e2e/FR21.e2e-spec.ts-snapshots/results.png differ diff --git a/e2e/FR22.e2e-spec.ts b/e2e/FR22.e2e-spec.ts index 3c537cea..df8d56d6 100644 --- a/e2e/FR22.e2e-spec.ts +++ b/e2e/FR22.e2e-spec.ts @@ -1,53 +1,37 @@ -const { test, expect } = require('@playwright/test'); +import { test, expect } from './global-setup'; import { goToHome, setLang } from './utils/app.utils'; test.describe('Zonemaster test FR22 - [Provide the possibility to see more information about encountered errors ' + - 'within the simple view]', () => { + 'within the simple view]', () => { test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); + await goToHome(page); + await setLang(page, 'en'); + await page.waitForLoadState('networkidle'); }); - test('should display full messages', async({ page }) => { - await expect(page.locator('.progress-bar')).toBeHidden(); + test('can toggle modules', async ({ page }) => { + await expect(page.locator('.zm-domain-test__progress-bar')).toHaveCount(0); + await page.locator('input[name="domain"]').first().focus(); - await page.locator('#domain-input').type('results.afNiC.Fr'); - await page.locator('button.launch').click(); + await page.keyboard.type('results.afNiC.Fr'); + await page.keyboard.press('Enter'); - // Basic header is the second one - const basicHeader = page.locator('.result h3').nth(1); - const basicTestcases = page.locator('#module-BASIC section'); + const basicHeader = page.locator('#zmModule-Basic .zm-result__module__title'); + const basicHeaderButton = page.locator('#zmModule-Basic .zm-result__module__title button'); + const basicContent = page.locator('#zmModule-Basic-content'); - // Basic02 header is the second one in the Basic results - const basic02Header = page.locator('#module-BASIC h4').nth(1); - const basic02Messages = page.locator('#testcase-entries-BASIC02 li'); + await expect(basicHeader).toBeVisible({ timeout: 10000 }); + await expect(basicHeader).toHaveText(/Basic/i); + await expect(basicContent).toHaveCount(0); - await expect(basicHeader).toBeVisible({ timeout: 10000 }); - await expect(basicHeader).toHaveText(/Basic/i); + await basicHeaderButton.click(); - await expect(basicTestcases).toHaveCount(3); + await expect(basicContent).toHaveCount(1); - for (let idx = 0; idx < 3; idx ++) { - await expect(basicTestcases.nth(idx)).not.toBeVisible(); - } + await basicHeaderButton.click(); - await basicHeader.click(); - - for (let idx = 0; idx < 3; idx ++) { - await expect(basicTestcases.nth(idx)).toBeVisible(); - } - - await expect(basic02Messages).toHaveCount(6); - for (let idx = 0; idx < 6; idx ++) { - await expect(basic02Messages.nth(idx)).not.toBeVisible(); - } - await basic02Header.click(); - for (let idx = 0; idx < 6; idx ++) { - await expect(basic02Messages.nth(idx)).toBeVisible(); - } - - - }); + await expect(basicContent).toHaveCount(0); + }); }); diff --git a/e2e/FR23.e2e-spec.ts b/e2e/FR23.e2e-spec.ts index 4e06a094..d8be18ab 100644 --- a/e2e/FR23.e2e-spec.ts +++ b/e2e/FR23.e2e-spec.ts @@ -1,24 +1,29 @@ -const { test, expect } = require('@playwright/test'); +import { test, expect } from './global-setup'; import { setLang } from './utils/app.utils'; test.describe('Zonemaster test FR23 - [Provide a list of previous runs for the domain and should be paginated]', () => { - test.beforeEach(async ({ page }) => { - await page.goto('/result/226f6d4f44ae3f80'); - await setLang(page, 'en'); - }); - - test('should display previous tests', async ({ page }) => { - const historyButton = page.locator('button.history'); - - await expect(historyButton).toBeVisible(); - await expect(historyButton).toHaveText('History'); - await historyButton.click(); - await expect(page.locator('ngb-modal-window')).toBeVisible(); - - await expect(page.locator('.list-group-item.list-group-item-action.list-group-item-success')).toHaveCount(9); - await expect(page.locator('.list-group-item.list-group-item-action.list-group-item-danger')).toHaveCount(1); - await expect(page.locator('ul.pagination > li')).toHaveCount(7); - }); + test.beforeEach(async ({ page }) => { + await page.goto('/'); + await setLang(page, 'en'); + await page.waitForLoadState('networkidle'); + }); + + test('should display previous tests', async ({ page }) => { + await page.locator('input[name="domain"]').first().focus(); + + await page.keyboard.type('results.afNiC.Fr'); + await page.keyboard.press('Enter'); + + const historyButton = page.locator('#zmHistoryButton'); + + await expect(historyButton).toBeVisible({ timeout: 10000 }); + await expect(historyButton).toHaveText('History'); + await historyButton.click(); + await expect(page.locator('#historyDialog')).toBeVisible({ timeout: 10000 }); + + await expect(page.locator('#historyDialog li:first-child')).toHaveCount(1); + await expect(page.locator('#historyDialog footer')).toHaveCount(1); + }); }); diff --git a/e2e/FR24.e2e-spec.ts b/e2e/FR24.e2e-spec.ts deleted file mode 100644 index ec097cd8..00000000 --- a/e2e/FR24.e2e-spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -const { test, expect } = require('@playwright/test'); - -import { setLang } from './utils/app.utils'; - -test.describe('Zonemaster test FR24 - [The list of previous runs should contain links to the previous tests]', () => { - test.beforeEach(async ({ page }) => { - await page.goto('result/226f6d4f44ae3f80'); - await setLang(page, 'en'); - }); - - test('should display previous run link', async ({ page }) => { - - const historyButton = page.locator('button.history'); - await expect(historyButton).toBeVisible(); - await expect(historyButton).toHaveText('History'); - await historyButton.click(); - await expect(page.locator('ngb-modal-window')).toBeVisible(); - - await expect(page.locator('.list-group-item.list-group-item-action.list-group-item-success a').first()).toHaveAttribute('href', '/en/result/84bfac6ae74d0e62'); - await expect(page.locator('.list-group-item.list-group-item-action.list-group-item-danger a').first()).toHaveAttribute('href', '/en/result/293f626579274f18'); - }); -}); diff --git a/e2e/FR25.e2e-spec.ts b/e2e/FR25.e2e-spec.ts index 81e22cbc..2fb15fe9 100644 --- a/e2e/FR25.e2e-spec.ts +++ b/e2e/FR25.e2e-spec.ts @@ -1,29 +1,32 @@ -const { test, expect } = require('@playwright/test'); +import { test, expect } from './global-setup'; import { setLang } from './utils/app.utils'; test.describe('Zonemaster test FR25 - [Should be able to export the result in multiple formats (HTML, CSV, JSON, TEXT)]', () => { - test.beforeEach(async ({ page }) => { - await page.goto('result/226f6d4f44ae3f80'); - await setLang(page, 'en'); - }); + test.beforeEach(async ({ page }) => { + await page.goto('/'); + await setLang(page, 'en'); + await page.waitForLoadState('networkidle'); + }); - test('should have an export button', async ({ page }) => { - const exportButton = page.locator('button.btn.export'); - await expect(page.locator('button.btn.export')).toBeVisible(); - await expect(exportButton).toHaveText('Export'); - }); + test('should have an export button', async ({ page }) => { + await page.locator('input[name="domain"]').first().focus(); - test('should open a modal that contains four export possibilities (HTML, CSV, HTML, TEXT)', async ({ page }) => { - await page.locator('button.btn.export').click(); - await expect(page.locator('button.btn.export + div.show')).toBeVisible(); + await page.keyboard.type('results.afNiC.Fr'); + await page.keyboard.press('Enter'); - const exportButtons = page.locator('button.btn.export + div.show button.btn'); - await expect(exportButtons).toHaveCount(4); + const exportButton = page.locator('#zmExportButton'); + const exportContent = page.locator('#zmExportDialog'); - const expectedText = ['JSON', 'CSV', 'HTML', 'TEXT']; - for (const idx in expectedText) { - await expect(exportButtons.nth(idx)).toHaveText(expectedText[idx]); - } - }); + await expect(exportButton).toBeVisible({ timeout: 10000 }); + await expect(exportButton).toHaveText('Export'); + await expect(exportContent).toBeHidden(); + await exportButton.click(); + await expect(exportContent).toBeVisible({ timeout: 1000 }); + + await expect(page.locator('#zmExportDialog button:nth-child(1)')).toHaveText('JSON'); + await expect(page.locator('#zmExportDialog button:nth-child(2)')).toHaveText('HTML'); + await expect(page.locator('#zmExportDialog button:nth-child(3)')).toHaveText('CSV'); + await expect(page.locator('#zmExportDialog button:nth-child(4)')).toHaveText('Text'); + }); }); diff --git a/e2e/FR26.e2e-spec.ts b/e2e/FR26.e2e-spec.ts deleted file mode 100644 index 4d5fbaca..00000000 --- a/e2e/FR26.e2e-spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -const { test, expect } = require('@playwright/test'); - -import { goToHome, setLang } from './utils/app.utils'; - -test.describe('Zonemaster test FR26 - [Should be able to show a progress bar with a rough estimate of the total test progress]', () => { - test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); - }); - - test('should display progress bar', async ({ page }) => { - await expect(page.locator('.progress-bar')).toBeHidden(); - await page.locator('#domain-input').type('progress.afNiC.Fr'); - await page.locator('button.launch').click(); - await expect(page.locator('.progress-bar')).toBeVisible({ timeout: 10000}); - await expect(page.locator('.progress-value')).toHaveText('50%'); - }); -}); diff --git a/e2e/example.spec.ts b/e2e/example.spec.ts new file mode 100644 index 00000000..54a906a4 --- /dev/null +++ b/e2e/example.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; + +test('has title', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Expect a title "to contain" a substring. + await expect(page).toHaveTitle(/Playwright/); +}); + +test('get started link', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Click the get started link. + await page.getByRole('link', { name: 'Get started' }).click(); + + // Expects page to have a heading with the name of Installation. + await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible(); +}); diff --git a/e2e/global-setup.ts b/e2e/global-setup.ts new file mode 100644 index 00000000..d7240c4a --- /dev/null +++ b/e2e/global-setup.ts @@ -0,0 +1,19 @@ +import { test as base } from '@playwright/test'; +import { setupApiMocks } from './utils/app.utils'; + +/** + * Global test setup that runs before each test + * - Sets up API mocking to avoid needing a real backend + * - Waits for network to be idle before proceeding + */ +export const test = base.extend({ + page: async ({ page }, use) => { + // Setup API mocks for all tests + await setupApiMocks(page); + + // Use the page in the test + await use(page); + }, +}); + +export { expect } from '@playwright/test'; diff --git a/e2e/interceptors/mock.interceptor.ts b/e2e/interceptors/mock.interceptor.ts new file mode 100644 index 00000000..81f1d39e --- /dev/null +++ b/e2e/interceptors/mock.interceptor.ts @@ -0,0 +1,959 @@ +/** + * Mock API interceptor for Playwright E2E tests + * + * This module provides mock responses for API calls to avoid needing a real backend during tests. + * Migrated from Angular HttpInterceptor to work with Playwright's route interception. + * + * Usage in tests: + * ```typescript + * import { setupApiMocks } from './utils/app.utils'; + * + * test.beforeEach(async ({ page }) => { + * await setupApiMocks(page); + * await page.goto('/'); + * }); + * ``` + */ + +export interface MockEndpoint { + url: string; + body: any; + method: string; + json: any; +} + +const urls: MockEndpoint[] = [ + // Version info + { + url: 'http://localhost:4321/api', + body: {jsonrpc: '2.0', id: 1643203570632, method:'version_info', params: {}}, + method: 'POST', + json: {jsonrpc: '2.0', id: 1643203570632, result: {zonemaster_engine: 'e2e-test', zonemaster_backend: 'e2e-test', zonemaster_ldns: 'e2e-test'}} + }, + + // Profile list in option + { + url: 'http://localhost:4321/api', + body: {jsonrpc: '2.0', id:1643203351479, method: 'profile_names', params: {}}, + method: 'POST', + json: {jsonrpc: '2.0', id: 1643203351479, result: ["default", "test_profile"]} + }, + + // FR18 - Should display progress bar + // FR26 - Should display progress bar + { + url: 'http://localhost:4321/api', + body: {'jsonrpc': '2.0', 'id': 1572254767685, 'method': 'start_domain_test', 'params': + { + 'language':'en', 'domain': 'progress.afNiC.Fr', 'profile': 'default', + 'nameservers': [], 'ds_info': [] + } + }, + method: 'POST', + json: {'jsonrpc': '2.0', 'id': 1572254767685, 'result': '2005cf23e9fb24b6'} + }, + + // FR19 - Should display progress bar when we add a NS name + { + url: 'http://localhost:4321/api', + body: {'jsonrpc': '2.0', 'id': 1572254767685, 'method': 'start_domain_test', 'params': + { + 'language':'en', 'domain': 'progress.afNiC.Fr', 'profile': 'default', + 'nameservers': [{"ns": "ns1.nic.fr"}], 'ds_info': [] + } + }, + method: 'POST', + json: {'jsonrpc': '2.0', 'id': 1572254767685, 'result': '2005cf23e9fb24b6'} + }, + + // FR19 - should NOT display progress bar when we add a NS ip + { + url: 'http://localhost:4321/api', + body: {'jsonrpc': '2.0', 'id': 1572254767685, 'method': 'start_domain_test', 'params': + { + 'language':'en', 'domain': 'progress.afNiC.Fr', 'profile': 'default', + 'nameservers': [{"ns":"", "ip": "192.134.4.1"}], 'ds_info': [] + } + }, + method: 'POST', + json: { + "jsonrpc": "2.0", + "error": { + "message": "Invalid method parameter(s).", + "code": "-32602", + "data": [ + { + "path": "/nameservers/0/ns", + "message": "The domain name character(s) are not supported" + } + ] + }, + "id": 1572254767685 + } + }, + + // FR20 - should display progress bar when we add a DS entry and launch a test + { + url: 'http://localhost:4321/api', + body:{'jsonrpc': '2.0', 'id': 1572277567967, 'method': 'start_domain_test', 'params': + { + 'language':'en', 'domain': 'progress.afNiC.Fr', 'profile': 'default', + 'nameservers': [], 'ds_info': [{ + "keytag": 37610, + "algorithm":8, + "digtype":2, + "digest":"d2681e301f632bd76544e6d5b6631a12d97b5479ff07cd24efecd19203c77db3" + }] + } + }, + method: 'POST', + json: {'jsonrpc': '2.0', 'id': 1572277567967, 'result': '2005cf23e9fb24b6'} + }, + + // FR18 - Should display progress bar + // FR19 - Should display progress bar when we add a NS name + // FR20 - should display progress bar when we add a DS entry and launch a test + // FR26 - Should display progress bar + { + url: 'http://localhost:4321/api', + body: {'jsonrpc': '2.0', 'id': 1572254972236, 'method': 'test_progress', 'params': {'test_id': '2005cf23e9fb24b6'}}, + method: 'POST', + json: {'jsonrpc': '2.0', 'id': 1572254972236, 'result': 50} + }, + + + // FR21 - Should display summary + // FR22 - Should display full messages + { + url: 'http://localhost:4321/api', + body: {'jsonrpc': '2.0', 'id': 1572254767685, 'method': 'start_domain_test', 'params': + { + 'language':'en', 'domain': 'results.afNiC.Fr', 'profile': 'default', + 'nameservers': [], 'ds_info': [] + } + }, + method: 'POST', + json: {'jsonrpc': '2.0', 'id': 1572254767685, 'result': '226f6d4f44ae3f80'} + }, + + { + url: 'http://localhost:4321/api', + body: {'jsonrpc': '2.0', 'id': 1572254767685, 'method': 'start_domain_test', 'params': + { + 'language':'en', 'domain': 'empty-results.afNiC.Fr', 'profile': 'default', + 'nameservers': [], 'ds_info': [] + } + }, + method: 'POST', + json: {'jsonrpc': '2.0', 'id': 1572254767685, 'result': 'a0fbcbf6c5ff5842'} + }, + + // FR21 - Should display summary + // FR22 - Should display full messages + { + url: 'http://localhost:4321/api', + body: {'jsonrpc': '2.0', 'id': 1572254972236, 'method': 'test_progress', 'params': {'test_id': '226f6d4f44ae3f80'}}, + method: 'POST', + json: {'jsonrpc': '2.0', 'id': 1572254972236, 'result': 100} + }, + + + { + url: 'http://localhost:4321/api', + body: {'jsonrpc': '2.0', 'id': 1572254972236, 'method': 'test_progress', 'params': {'test_id': 'a0fbcbf6c5ff5842'}}, + method: 'POST', + json: {'jsonrpc': '2.0', 'id': 1572254972236, 'result': 100} + }, + + + { + url: 'http://localhost:4321/api', + body: {'jsonrpc': '2.0', 'id': 1572254972327, 'method': 'get_test_results', 'params': {'id': 'a0fbcbf6c5ff5842', 'language': 'en'}}, + method: 'POST', + json: {'jsonrpc': '2.0', 'id': 1572254972327, 'result': { + 'params': {'profile' : 'default', 'priority': 10, 'ipv6': true, 'ipv4': true, 'client_id': 'Zonemaster GUI', + 'nameservers': [], 'ds_info': [], 'domain': 'empty-results.afNiC.Fr', 'queue': 0, 'client_version': '3.1.0' + }, 'hash_id': 'a0fbcbf6c5ff5842', 'created_at': '2019-10-28T09:29:26Z', 'creation_time': '2019-10-28 09:29:26.288692', 'id': 49640, 'results':[] + } + } + }, + + + // FR21 - Should display summary + // FR22 - Should display full messages + + // FR23 - Should display previous tests + // FR24 - Should display previous run link + // FR25 - Should have an export button + // FR25 - Should open a modal that contains four export possibilities + { + url: 'http://localhost:4321/api', + body: {'jsonrpc': '2.0', 'id': 1572254972327, 'method': 'get_test_results', 'params': {'id': '226f6d4f44ae3f80', 'language': 'en'}}, + method: 'POST', + json: {'jsonrpc': '2.0', 'id': 1572254972327, 'result': { + 'params': { + 'profile' : 'default', + 'priority': 10, + 'ipv6': true, + 'ipv4': true, + 'client_id': 'Zonemaster GUI', + 'nameservers': [], + 'ds_info': [], + 'domain': 'results.afNiC.Fr', + 'queue': 0, + 'client_version': '3.6.1' + }, + 'hash_id': 'efd1dedc98d456bf', + 'created_at': '2022-11-23T16:38:17Z', + 'creation_time': '2022-11-23 16:38:17', + 'id': 49640, + "testcase_descriptions": { + "CONSISTENCY04": "Name server NS consistency", + "ZONE08": "MX is not an alias", + "DNSSEC10": "Zone contains NSEC or NSEC3 records", + "NAMESERVER07": "To check whether authoritative name servers return an upward referral", + "UNSPECIFIED": "UNSPECIFIED", + "CONSISTENCY06": "SOA MNAME consistency", + "NAMESERVER04": "Same source address", + "ZONE10": "No multiple SOA records", + "SYNTAX08": "MX name must have a valid hostname", + "SYNTAX05": "Misuse of '@' character in the SOA RNAME field", + "ZONE05": "SOA 'expire' minimum value", + "NAMESERVER08": "Testing QNAME case insensitivity", + "CONNECTIVITY03": "AS Diversity", + "NAMESERVER02": "Test of EDNS0 support", + "NAMESERVER05": "Behaviour against AAAA query", + "BASIC01": "The domain must have a parent domain", + "SYNTAX01": "No illegal characters in the domain name", + "CONSISTENCY01": "SOA serial number consistency", + "DELEGATION06": "Existence of SOA", + "SYNTAX02": "No hyphen ('-') at the start or end of the domain name", + "SYNTAX04": "The NS name must have a valid domain/hostname", + "DELEGATION01": "Minimum number of name servers", + "ZONE04": "SOA 'retry' at least 1 hour", + "CONSISTENCY02": "SOA RNAME consistency", + "NAMESERVER03": "Test availability of zone transfer (AXFR)", + "ADDRESS01": "Name server address must be globally routable", + "CONSISTENCY03": "SOA timers consistency", + "DNSSEC15": "Existence of CDS and CDNSKEY", + "ADDRESS03": "Reverse DNS entry matches name server name", + "NAMESERVER09": "Testing QNAME case sensitivity", + "DNSSEC04": "Check for too short or too long RRSIG lifetimes", + "DELEGATION02": "Name servers must have distinct IP addresses", + "ADDRESS02": "Reverse DNS entry exists for name server IP address", + "DELEGATION05": "Name server must not point at CNAME alias", + "CONSISTENCY05": "Consistency between glue and authoritative data", + "SYNTAX03": "There must be no double hyphen ('--') in position 3 and 4 of the domain name", + "ZONE01": "Fully qualified master nameserver in SOA", + "ZONE03": "SOA 'retry' lower than 'refresh'", + "ZONE09": "MX record present", + "ZONE07": "SOA master is not an alias", + "DELEGATION07": "Parent glue name records present in child", + "SYNTAX07": "No illegal characters in the SOA MNAME field", + "DELEGATION04": "Name server is authoritative", + "SYNTAX06": "No illegal characters in the SOA RNAME field", + "NAMESERVER01": "A name server should not be a recursor", + "DELEGATION03": "No truncation of referrals", + "DNSSEC05": "Check for invalid DNSKEY algorithms", + "ZONE06": "SOA 'minimum' maximum value", + "ZONE02": "SOA 'refresh' minimum value", + "BASIC02": "The domain must have at least one working name server", + "NAMESERVER06": "NS can be resolved" + }, + 'results': [ + { + "message": "Using version v4.5.1 of the Zonemaster engine.\n", + "module": "SYSTEM", + "testcase": "UNSPECIFIED", + "level": "INFO" + }, + { + "testcase": "BASIC01", + "level": "INFO", + "module": "Basic", + "message": "Parent domain 'fr' was found for the tested domain.\n" + }, + { + "level": "INFO", + "testcase": "BASIC02", + "message": "Nameserver ns1.nic.fr/192.134.4.1 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n", + "module": "BASIC" + }, + { + "level": "INFO", + "testcase": "BASIC02", + "module": "Basic", + "message": "Nameserver ns1.nic.fr/2001:67c:2218:2::4:1 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n" + }, + { + "module": "Basic", + "message": "Nameserver ns2.nic.fr/192.93.0.4 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n", + "testcase": "BASIC02", + "level": "INFO" + }, + { + "level": "INFO", + "testcase": "BASIC02", + "message": "Nameserver ns2.nic.fr/2001:660:3005:1::1:2 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n", + "module": "BASIC" + }, + { + "message": "Nameserver ns3.nic.fr/192.134.0.49 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n", + "module": "Basic", + "testcase": "BASIC02", + "level": "INFO" + }, + { + "module": "Basic", + "message": "Nameserver ns3.nic.fr/2001:660:3006:1::1:1 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n", + "level": "INFO", + "testcase": "BASIC02" + }, + { + "module": "Basic", + "message": "Functional nameserver found. \"A\" query for www.afnic.fr test skipped.\n", + "testcase": "UNSPECIFIED", + "level": "INFO" + }, + { + "module": "ADDRESS", + "message": "All Nameserver addresses are in the routable public addressing space.\n", + "level": "INFO", + "testcase": "ADDRESS01" + }, + { + "module": "ADDRESS", + "message": "Reverse DNS entry exists for each Nameserver IP address.\n", + "testcase": "ADDRESS02", + "level": "INFO" + }, + { + "message": "Every reverse DNS entry matches name server name.\n", + "module": "ADDRESS", + "testcase": "ADDRESS03", + "level": "INFO" + }, + { + "module": "CONNECTIVITY", + "message": "At least two IPv4 addresses of the authoritative nameservers are announce by different AS sets. A merged list of all AS: (\"2485, \"2486).\n", + "testcase": "CONNECTIVITY03", + "level": "INFO" + }, + { + "module": "CONNECTIVITY", + "message": "At least two IPv6 addresses of the authoritative nameservers are announce by different AS sets. A merged list of all AS: (\"2486, \"2485).\n", + "level": "INFO", + "testcase": "CONNECTIVITY03" + }, + { + "level": "INFO", + "testcase": "CONSISTENCY01", + "module": "CONSISTENCY", + "message": "Saw SOA serial number 2022112200 on following nameserver set : ns1.nic.fr/192.134.4.1; ns1.nic.fr/2001:67c:2218:2::4:1; ns2.nic.fr/192.93.0.4; ns2.nic.fr/2001:660:3005:1::1:2; ns3.nic.fr/192.134.0.49; ns3.nic.fr/2001:660:3006:1::1:1.\n" + }, + { + "message": "A single SOA serial number was found (2022112200).\n", + "module": "CONSISTENCY", + "testcase": "CONSISTENCY01", + "level": "INFO" + }, + { + "testcase": "CONSISTENCY02", + "level": "INFO", + "message": "A single SOA rname value was found (hostmaster.nic.fr.).\n", + "module": "CONSISTENCY" + }, + { + "level": "INFO", + "testcase": "CONSISTENCY03", + "module": "CONSISTENCY", + "message": "A single SOA time parameter set was seen (REFRESH=7200, RETRY=1800, EXPIRE=2419200, MINIMUM=5400).\n" + }, + { + "testcase": "CONSISTENCY04", + "level": "INFO", + "message": "A single NS set was found (ns1.nic.fr.; ns2.nic.fr.; ns3.nic.fr.).\n", + "module": "CONSISTENCY" + }, + { + "message": "Glue records are consistent between glue and authoritative data.\n", + "module": "CONSISTENCY", + "level": "INFO", + "testcase": "CONSISTENCY05" + }, + { + "message": "A single SOA mname value was seen (dnsmaster.nic.fr.).\n", + "module": "CONSISTENCY", + "level": "INFO", + "testcase": "CONSISTENCY06" + }, + { + "module": "DELEGATION", + "message": "Parent lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr). Lower limit set to 2.\n", + "level": "INFO", + "testcase": "DELEGATION01" + }, + { + "level": "INFO", + "testcase": "DELEGATION01", + "message": "Child lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr). Lower limit set to 2.\n", + "module": "DELEGATION" + }, + { + "module": "DELEGATION", + "message": "Child lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr) that resolve to IPv4 addresses (192.134.0.49; 192.134.4.1; 192.93.0.4). Lower limit set to 2.\n", + "testcase": "DELEGATION01", + "level": "INFO" + }, + { + "level": "INFO", + "testcase": "DELEGATION01", + "module": "DELEGATION", + "message": "Child lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr) that resolve to IPv6 addresses (2001:660:3005:1::1:2; 2001:660:3006:1::1:1; 2001:67c:2218:2::4:1). Lower limit set to 2.\n" + }, + { + "testcase": "DELEGATION01", + "level": "INFO", + "message": "Delegation lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr) that resolve to IPv4 addresses (192.134.0.49; 192.134.4.1; 192.93.0.4). Lower limit set to 2.\n", + "module": "DELEGATION" + }, + { + "message": "Delegation lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr) that resolve to IPv6 addresses (2001:660:3005:1::1:2; 2001:660:3006:1::1:1; 2001:67c:2218:2::4:1). Lower limit set to 2.\n", + "module": "DELEGATION", + "level": "INFO", + "testcase": "DELEGATION01" + }, + { + "message": "All the IP addresses used by the nameservers in parent are unique.\n", + "module": "DELEGATION", + "level": "INFO", + "testcase": "DELEGATION02" + }, + { + "level": "INFO", + "testcase": "DELEGATION02", + "message": "All the IP addresses used by the nameservers in child are unique.\n", + "module": "DELEGATION" + }, + { + "level": "INFO", + "testcase": "DELEGATION02", + "module": "DELEGATION", + "message": "All the IP addresses used by the nameservers are unique.\n" + }, + { + "testcase": "DELEGATION03", + "level": "INFO", + "module": "DELEGATION", + "message": "The smallest possible legal referral packet is smaller than 513 octets (it is 373).\n" + }, + { + "module": "DELEGATION", + "message": "All these nameservers are confirmed to be authoritative : ns1.nic.fr; ns2.nic.fr; ns3.nic.fr.\n", + "testcase": "DELEGATION04", + "level": "INFO" + }, + { + "testcase": "DELEGATION05", + "level": "INFO", + "module": "DELEGATION", + "message": "No nameserver points to CNAME alias.\n" + }, + { + "level": "INFO", + "testcase": "DELEGATION06", + "message": "All the nameservers have SOA record.\n", + "module": "DELEGATION" + }, + { + "module": "DELEGATION", + "message": "All of the nameserver names are listed both at parent and child.\n", + "testcase": "DELEGATION07", + "level": "INFO" + }, + { + "message": "RRSIG with keytag 53080 and covering type(s) DNSKEY expires at : Wed Dec 21 20:36:15 2022.\n", + "module": "DNSSEC", + "level": "INFO", + "testcase": "DNSSEC04" + }, + { + "message": "RRSIG with keytag 15756 and covering type(s) SOA expires at : Wed Dec 21 12:48:04 2022.\n", + "module": "DNSSEC", + "testcase": "DNSSEC04", + "level": "INFO" + }, + { + "module": "DNSSEC", + "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", + "testcase": "DNSSEC05", + "level": "INFO" + }, + { + "testcase": "DNSSEC05", + "level": "INFO", + "module": "DNSSEC", + "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n" + }, + { + "testcase": "DNSSEC05", + "level": "INFO", + "module": "DNSSEC", + "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n" + }, + { + "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", + "module": "DNSSEC", + "testcase": "DNSSEC05", + "level": "INFO" + }, + { + "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", + "module": "DNSSEC", + "level": "INFO", + "testcase": "DNSSEC05" + }, + { + "level": "INFO", + "testcase": "DNSSEC05", + "module": "DNSSEC", + "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n" + }, + { + "level": "INFO", + "testcase": "DNSSEC05", + "module": "DNSSEC", + "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n" + }, + { + "testcase": "DNSSEC05", + "level": "INFO", + "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", + "module": "DNSSEC" + }, + { + "module": "DNSSEC", + "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", + "testcase": "DNSSEC05", + "level": "INFO" + }, + { + "testcase": "DNSSEC05", + "level": "INFO", + "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", + "module": "DNSSEC" + }, + { + "module": "DNSSEC", + "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", + "level": "INFO", + "testcase": "DNSSEC05" + }, + { + "module": "DNSSEC", + "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", + "level": "INFO", + "testcase": "DNSSEC05" + }, + { + "level": "INFO", + "testcase": "DNSSEC10", + "message": "The zone has NSEC3 records. Fetched from the nameservers with IP addresses \"192.134.0.49; 192.134.4.1; 192.93.0.4; 2001:660:3005:1::1:2; 2001:660:3006:1::1:1; 2001:67c:2218:2::4:1\".\n", + "module": "DNSSEC" + }, + { + "module": "DNSSEC", + "message": "No CDS or CDNSKEY RRsets are found on any name server.\n", + "testcase": "DNSSEC15", + "level": "INFO" + }, + { + "message": "Nameserver ns1.nic.fr/192.134.4.1 is not a recursor.\n", + "module": "NAMESERVER", + "ns": "ns1.nic.fr/192.134.4.1", + "testcase": "NAMESERVER01", + "level": "INFO" + }, + { + "testcase": "NAMESERVER01", + "level": "INFO", + "ns": "ns1.nic.fr/2001:67c:2218:2::4:1", + "module": "NAMESERVER", + "message": "Nameserver ns1.nic.fr/2001:67c:2218:2::4:1 is not a recursor.\n" + }, + { + "message": "Nameserver ns2.nic.fr/192.93.0.4 is not a recursor.\n", + "module": "NAMESERVER", + "testcase": "NAMESERVER01", + "ns": "ns2.nic.fr/192.93.0.4", + "level": "INFO" + }, + { + "ns": "ns2.nic.fr/2001:660:3005:1::1:2", + "testcase": "NAMESERVER01", + "level": "INFO", + "module": "NAMESERVER", + "message": "Nameserver ns2.nic.fr/2001:660:3005:1::1:2 is not a recursor.\n" + }, + { + "module": "NAMESERVER", + "message": "Nameserver ns3.nic.fr/192.134.0.49 is not a recursor.\n", + "testcase": "NAMESERVER01", + "level": "INFO", + "ns": "ns3.nic.fr/192.134.0.49" + }, + { + "message": "Nameserver ns3.nic.fr/2001:660:3006:1::1:1 is not a recursor.\n", + "module": "NAMESERVER", + "testcase": "NAMESERVER01", + "level": "INFO", + "ns": "ns3.nic.fr/2001:660:3006:1::1:1" + }, + { + "level": "INFO", + "testcase": "NAMESERVER02", + "ns": "All", + "message": "The following nameservers support EDNS0 : ns1.nic.fr/2001:67c:2218:2::4:1; ns3.nic.fr/192.134.0.49; ns1.nic.fr/192.134.4.1; ns3.nic.fr/2001:660:3006:1::1:1; ns2.nic.fr/192.93.0.4; ns2.nic.fr/2001:660:3005:1::1:2.\n", + "module": "NAMESERVER" + }, + { + "module": "NAMESERVER", + "message": "AXFR not available on nameserver ns1.nic.fr/192.134.4.1.\n", + "testcase": "NAMESERVER03", + "level": "INFO", + "ns": "ns1.nic.fr/192.134.4.1" + }, + { + "ns": "ns1.nic.fr/2001:67c:2218:2::4:1", + "testcase": "NAMESERVER03", + "level": "INFO", + "module": "NAMESERVER", + "message": "AXFR not available on nameserver ns1.nic.fr/2001:67c:2218:2::4:1.\n" + }, + { + "message": "AXFR not available on nameserver ns2.nic.fr/192.93.0.4.\n", + "module": "NAMESERVER", + "level": "INFO", + "testcase": "NAMESERVER03", + "ns": "ns2.nic.fr/192.93.0.4" + }, + { + "testcase": "NAMESERVER03", + "ns": "ns2.nic.fr/2001:660:3005:1::1:2", + "level": "INFO", + "message": "AXFR not available on nameserver ns2.nic.fr/2001:660:3005:1::1:2.\n", + "module": "NAMESERVER" + }, + { + "testcase": "NAMESERVER03", + "ns": "ns3.nic.fr/192.134.0.49", + "level": "INFO", + "module": "NAMESERVER", + "message": "AXFR not available on nameserver ns3.nic.fr/192.134.0.49.\n" + }, + { + "level": "INFO", + "testcase": "NAMESERVER03", + "ns": "ns3.nic.fr/2001:660:3006:1::1:1", + "message": "AXFR not available on nameserver ns3.nic.fr/2001:660:3006:1::1:1.\n", + "module": "NAMESERVER" + }, + { + "testcase": "NAMESERVER04", + "ns": "All", + "level": "INFO", + "message": "All nameservers reply with same IP used to query them.\n", + "module": "NAMESERVER" + }, + { + "message": "The following nameservers answer AAAA queries without problems : ns3.nic.fr/2001:660:3006:1::1:1; ns1.nic.fr/192.134.4.1; ns3.nic.fr/192.134.0.49; ns1.nic.fr/2001:67c:2218:2::4:1; ns2.nic.fr/192.93.0.4; ns2.nic.fr/2001:660:3005:1::1:2.\n", + "module": "NAMESERVER", + "level": "INFO", + "testcase": "NAMESERVER05", + "ns": "All" + }, + { + "ns": "All", + "testcase": "NAMESERVER06", + "level": "INFO", + "message": "All nameservers succeeded to resolve to an IP address.\n", + "module": "NAMESERVER" + }, + { + "level": "INFO", + "testcase": "NAMESERVER07", + "ns": "All", + "module": "NAMESERVER", + "message": "None of the following nameservers returns an upward referral : ns1.nic.fr; ns2.nic.fr; ns3.nic.fr.\n" + }, + { + "testcase": "NAMESERVER08", + "level": "INFO", + "ns": "ns1.nic.fr/192.134.4.1", + "message": "Nameserver ns1.nic.fr/192.134.4.1 preserves original case of queried names (WwW.afNiC.fr).\n", + "module": "NAMESERVER" + }, + { + "testcase": "NAMESERVER08", + "ns": "ns1.nic.fr/2001:67c:2218:2::4:1", + "level": "INFO", + "message": "Nameserver ns1.nic.fr/2001:67c:2218:2::4:1 preserves original case of queried names (WwW.afNiC.fr).\n", + "module": "NAMESERVER" + }, + { + "module": "NAMESERVER", + "message": "Nameserver ns2.nic.fr/192.93.0.4 preserves original case of queried names (WwW.afNiC.fr).\n", + "level": "INFO", + "testcase": "NAMESERVER08", + "ns": "ns2.nic.fr/192.93.0.4" + }, + { + "message": "Nameserver ns2.nic.fr/2001:660:3005:1::1:2 preserves original case of queried names (WwW.afNiC.fr).\n", + "module": "NAMESERVER", + "level": "INFO", + "testcase": "NAMESERVER08", + "ns": "ns2.nic.fr/2001:660:3005:1::1:2" + }, + { + "testcase": "NAMESERVER08", + "ns": "ns3.nic.fr/192.134.0.49", + "level": "INFO", + "module": "NAMESERVER", + "message": "Nameserver ns3.nic.fr/192.134.0.49 preserves original case of queried names (WwW.afNiC.fr).\n" + }, + { + "level": "INFO", + "testcase": "NAMESERVER08", + "ns": "ns3.nic.fr/2001:660:3006:1::1:1", + "message": "Nameserver ns3.nic.fr/2001:660:3006:1::1:1 preserves original case of queried names (WwW.afNiC.fr).\n", + "module": "NAMESERVER" + }, + { + "ns": "All", + "testcase": "NAMESERVER09", + "level": "INFO", + "message": "When asked for SOA records on \"www.afnic.fr\" with different cases, all servers reply consistently.\n", + "module": "NAMESERVER" + }, + { + "module": "SYNTAX", + "message": "No illegal characters in the domain name (afnic.fr).\n", + "level": "INFO", + "testcase": "SYNTAX01" + }, + { + "message": "Neither end of any label in the domain name (afnic.fr) has a hyphen.\n", + "module": "SYNTAX", + "level": "INFO", + "testcase": "SYNTAX02" + }, + { + "message": "Domain name (afnic.fr) has no label with a double hyphen ('--') in position 3 and 4 (with a prefix which is not 'xn--').\n", + "module": "SYNTAX", + "testcase": "SYNTAX03", + "level": "INFO" + }, + { + "testcase": "SYNTAX04", + "level": "INFO", + "module": "SYNTAX", + "message": "Nameserver (ns1.nic.fr) syntax is valid.\n" + }, + { + "testcase": "SYNTAX04", + "level": "INFO", + "message": "Nameserver (ns2.nic.fr) syntax is valid.\n", + "module": "SYNTAX" + }, + { + "module": "SYNTAX", + "message": "Nameserver (ns3.nic.fr) syntax is valid.\n", + "testcase": "SYNTAX04", + "level": "INFO" + }, + { + "module": "SYNTAX", + "message": "There is no misused '@' character in the SOA RNAME field (hostmaster.nic.fr.).\n", + "level": "INFO", + "testcase": "SYNTAX05" + }, + { + "message": "The SOA RNAME field (hostmaster@nic.fr) is compliant with RFC2822.\n", + "module": "SYNTAX", + "level": "INFO", + "testcase": "SYNTAX06" + }, + { + "level": "INFO", + "testcase": "SYNTAX07", + "message": "SOA MNAME (dnsmaster.nic.fr) syntax is valid.\n", + "module": "SYNTAX" + }, + { + "testcase": "SYNTAX08", + "level": "INFO", + "module": "SYNTAX", + "message": "Domain name MX (mx4.nic.fr) syntax is valid.\n" + }, + { + "testcase": "SYNTAX08", + "level": "INFO", + "message": "Domain name MX (mx5.nic.fr) syntax is valid.\n", + "module": "SYNTAX" + }, + { + "message": "SOA 'mname' nameserver dnsmaster.nic.fr/192.134.4.2 does not respond.\n", + "module": "ZONE", + "level": "NOTICE", + "testcase": "ZONE01" + }, + { + "testcase": "ZONE01", + "level": "NOTICE", + "message": "SOA 'mname' nameserver (dnsmaster.nic.fr) is not listed in \"parent\" NS records for tested zone (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr).\n", + "module": "ZONE" + }, + { + "module": "ZONE", + "message": "SOA 'refresh' value (7200) is less than the recommended one (14400).\n", + "level": "NOTICE", + "testcase": "ZONE02" + }, + { + "testcase": "ZONE03", + "level": "INFO", + "message": "SOA 'refresh' value (7200) is higher than the SOA 'retry' value (1800).\n", + "module": "ZONE" + }, + { + "testcase": "ZONE04", + "level": "NOTICE", + "module": "ZONE", + "message": "SOA 'retry' value (1800) is less than the recommended one (3600).\n" + }, + { + "level": "INFO", + "testcase": "ZONE05", + "message": "SOA 'expire' value (2419200) is higher than the minimum recommended value (604800) and not lower than the 'refresh' value (7200).\n", + "module": "ZONE" + }, + { + "module": "ZONE", + "message": "SOA 'minimum' value (5400) is between the recommended ones (300/86400).\n", + "testcase": "ZONE06", + "level": "INFO" + }, + { + "testcase": "ZONE07", + "level": "INFO", + "module": "ZONE", + "message": "SOA 'mname' value (dnsmaster.nic.fr) refers to a NS which is not an alias (CNAME).\n" + }, + { + "level": "INFO", + "testcase": "ZONE07", + "module": "ZONE", + "message": "SOA 'mname' value (dnsmaster.nic.fr) refers to a NS which is not an alias (CNAME).\n" + }, + { + "level": "INFO", + "testcase": "ZONE08", + "module": "ZONE", + "message": "MX record for the domain is not pointing to a CNAME.\n" + }, + { + "testcase": "ZONE08", + "level": "INFO", + "message": "MX record for the domain is not pointing to a CNAME.\n", + "module": "ZONE" + }, + { + "module": "ZONE", + "message": "Mail targets in the MX RRset \"mx5.nic.fr.; mx4.nic.fr.\" returned from name servers \"2001:660:3006:1::1:1; 2001:67c:2218:2::4:1; 192.134.4.1; 2001:660:3005:1::1:2; 192.93.0.4; 192.134.0.49\".\n", + "testcase": "ZONE09", + "level": "INFO" + }, + { + "module": "ZONE", + "message": "A unique SOA record is returned by all nameservers of the zone.\n", + "level": "INFO", + "testcase": "ZONE10" + } + ] + } + } + }, + + // FR23 - Should display previous tests + // FR24 - Should display previous run link + // FR25 - Should have an export button + // FR25 - Should open a modal that contains four export possibilities + { + url: 'http://localhost:4321/api', + body: {'jsonrpc': '2.0', 'id': 1572271917712, 'method': 'get_test_history', 'params': {'offset': 0, 'limit': 100, 'filter': 'all', 'frontend_params': {'domain': 'results.afNiC.Fr'}}}, + method: 'POST', + json: {'jsonrpc': '2.0', 'id': 1572271917712, 'result': [ + {'overall_result': 'error', 'created_at': '2019-10-28T09:24:57Z', 'creation_time': '2019-10-28 09:42:42.432378', 'id': '293f626579274f18'}, + {'overall_result': 'ok', 'created_at': '2019-10-28T09:24:57Z', 'creation_time': '2019-10-28 09:24:57.395431', 'id': '84bfac6ae74d0e62'}, + {'overall_result': 'ok', 'created_at': '2019-10-24T07:49:48Z', 'creation_time': '2019-10-24 07:49:48.079617', 'id': 'efe0931716b0068c'}, + {'overall_result': 'ok', 'created_at': '2019-10-24T07:49:16Z', 'creation_time': '2019-10-24 07:49:16.271481', 'id': '46acbdcbc456db1d'}, + {'overall_result': 'ok', 'created_at': '2019-10-24T07:35:52Z', 'creation_time': '2019-10-24 07:35:52.819536', 'id': 'fd5b10ae1a46ce5e'}, + {'overall_result': 'ok', 'created_at': '2019-10-24T07:35:21Z', 'creation_time': '2019-10-24 07:35:21.309154', 'id': '1b29b0582a99d7ab'}, + {'overall_result': 'ok', 'created_at': '2019-10-24T06:51:22Z', 'creation_time': '2019-10-24 06:51:22.373411', 'id': '8c4829b7f60edc25'}, + {'overall_result': 'ok', 'created_at': '2019-10-24T06:50:50Z', 'creation_time': '2019-10-24 06:50:50.801272', 'id': '9b89a0988dbccfdb'}, + {'overall_result': 'ok', 'created_at': '2019-10-24T06:39:37Z', 'creation_time': '2019-10-24 06:39:37.48699', 'id': '89c662ddd43a8b03'}, + {'overall_result': 'ok', 'created_at': '2019-10-24T06:39:05Z', 'creation_time': '2019-10-24 06:39:05.851497', 'id': '2add42a68594b37a'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T20:59:41Z', 'creation_time': '2019-10-23 20:59:41.594768', 'id': 'c334d7eb96af1d19'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T20:55:13Z', 'creation_time': '2019-10-23 20:55:13.205118', 'id': 'b4146c79de8b3638'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T20:46:06Z', 'creation_time': '2019-10-23 20:46:06.989113', 'id': '226f6d4f44ae3f80'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T20:40:46Z', 'creation_time': '2019-10-23 20:40:46.272244', 'id': 'a509e33a41f28322'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T20:34:21Z', 'creation_time': '2019-10-23 20:34:21.681947', 'id': '5d41c57fa24c76f5'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T20:28:25Z', 'creation_time': '2019-10-23 20:28:25.518303', 'id': '298b4c53d5024f44'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T20:16:39Z', 'creation_time': '2019-10-23 20:16:39.466781', 'id': 'f9c587426b885036'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T19:41:31Z', 'creation_time': '2019-10-23 19:41:31.048622', 'id': 'bb2109eb54d9ef58'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T16:20:56Z', 'creation_time': '2019-10-23 16:20:56.180064', 'id': '3ff7e65752a431e8'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T15:37:05Z', 'creation_time': '2019-10-23 15:37:05.935049', 'id': 'e8a3507cce49392d'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T15:25:35Z', 'creation_time': '2019-10-23 15:25:35.162808', 'id': '19f7773777cdad1a'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T15:09:54Z', 'creation_time': '2019-10-23 15:09:54.801371', 'id': '61907eb87c8bb1d9'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T14:52:56Z', 'creation_time': '2019-10-23 14:52:56.823486', 'id': '497ce5549e80d6d1'}, + {'overall_result': 'ok', 'created_at': '2019-10-23T14:39:25Z', 'creation_time': '2019-10-23 14:39:25.259204', 'id': '470e62da84dcbd16'}, + {'overall_result': 'error', 'created_at': '2019-10-23T14:26:35Z', 'creation_time': '2019-10-23 14:26:35.853106', 'id': '9b8e25c35dc365ac'} + ]} + }, +]; + +/** + * Find a matching mock response for the given request + */ +export function findMockResponse(url: string, method: string, body: any): any | null { + for (const element of urls) { + // Don't compare client info + const requestParams = { ...body?.params }; + delete requestParams['client_version']; + delete requestParams['client_id']; + + // Match URL by checking if both end with /api (ignore hostname and port differences) + const urlMatch = url.endsWith('/api') && element.url.endsWith('/api'); + const methodMatch = method === element.method; + const bodyMethodMatch = body?.method === element.body.method; + + // For params matching, check if request params contain all mock params' required fields + let paramsMatch = false; + if (bodyMethodMatch && element.body.params) { + // Check if key fields match (domain, language, etc.) + // For start_domain_test, we primarily care about domain matching + if (element.body.method === 'start_domain_test') { + paramsMatch = requestParams.domain === element.body.params.domain && + requestParams.language === element.body.params.language; + } else { + // For other methods, do exact match + paramsMatch = JSON.stringify(requestParams) === JSON.stringify(element.body.params); + } + } + + if (urlMatch && methodMatch && bodyMethodMatch && paramsMatch) { + return element.json; + } + } + return null; +} diff --git a/e2e/navigation.e2e-spec.ts b/e2e/navigation.e2e-spec.ts deleted file mode 100644 index 637005fd..00000000 --- a/e2e/navigation.e2e-spec.ts +++ /dev/null @@ -1,59 +0,0 @@ -const { test, expect } = require('@playwright/test'); - -import { goToHome, setLang } from './utils/app.utils'; - -test.describe('Navigation should be consistent and honor browser behaviour', () => { - test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); - }); - - test('ensure navigation to result page is consistent - #300', async ({ page, baseURL}) => { - const domainCheckUrl = baseURL + '/en/run-test'; - const firstTestUrl = baseURL + '/en/result/226f6d4f44ae3f80'; - const secondTestUrl = baseURL + '/en/result/a0fbcbf6c5ff5842'; - const firstDomain = 'results.afNiC.Fr'; - const secondDomain = 'empty-results.afNiC.Fr'; - - // Create a new test - await expect(page).toHaveURL(domainCheckUrl); - await page.locator('#domain-input').type(firstDomain); - await page.locator('button.launch').click(); - // Verify that when the test finishes the browser is redirect to the result page with an url /result/. - // The "run domain test" form is visible. - await expect(page.locator('section.result h2')).toContainText(firstDomain, { timeout: 10000 }); - await expect(page.locator('section.result')).toBeVisible(); - await expect(page.locator('form.domain')).toBeVisible(); - await expect(page).toHaveURL(firstTestUrl); - // Press the back button in the browser. - await page.goBack() - // Verify that only the "run domain test" form is displayed. The url should be /run-test. - await expect(page).toHaveURL(domainCheckUrl); - await expect(page.locator('section.result')).not.toBeVisible(); - await expect(page.locator('form.domain')).toBeVisible(); - // Press the forward button in the browser. - await page.goForward(); - // Verify that the previous test result is displayed with the url /result/. - // The "run domain test" form should still be visible. - await expect(page.locator('section.result h2')).toContainText(firstDomain, { timeout: 10000 }); - await expect(page.locator('section.result')).toBeVisible(); - await expect(page.locator('form.domain')).toBeVisible(); - await expect(page).toHaveURL(firstTestUrl); - // Create a second test for an other domain from the result page. - await page.locator('#domain-input').type(secondDomain); - await page.locator('div button.launch').click(); - // When the second test finishes the url should change to /result/. - // The result for the second test should be displayed and the "run domain test" form should still be visible. - await expect(page.locator('section.result h2')).toContainText(secondDomain, { timeout: 10000 }); - await expect(page.locator('section.result')).toBeVisible(); - await expect(page.locator('form.domain')).toBeVisible(); - await expect(page).toHaveURL(secondTestUrl); - // Refresh the page. - await page.reload(); - // The "run domain test" form is not visible, instead a Result header is displayed. - await expect(page.locator('h1')).toHaveText('Result'); - await expect(page.locator('section.result')).toBeVisible({ timeout: 10000 }); - await expect(page.locator('section.result h2')).toContainText(secondDomain); - await expect(page.locator('form.domain')).not.toBeVisible(); - }); -}); diff --git a/e2e/redirect.e2e-spec.ts b/e2e/redirect.e2e-spec.ts deleted file mode 100644 index 669da105..00000000 --- a/e2e/redirect.e2e-spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -const { test, expect } = require('@playwright/test'); - -import { goToHome, setLang } from './utils/app.utils'; - -test.describe('Redirection should properly work', () => { - test.beforeEach(async ({ page }) => { - await goToHome(page); - await setLang(page, 'en'); - }); - - test('/ should redirect to /run-test', async ({ page, baseURL }) => { - await page.goto( baseURL + '/' ); - await expect(page).toHaveURL( baseURL + '/en/run-test' ); - }); - - test('/domain_check should redirect to /run-test', async ({ page, baseURL }) => { - await page.goto( baseURL + '/domain_check' ); - await expect(page).toHaveURL( baseURL + '/en/run-test' ); - }); - - test('/test/ should redirect to /result/', async ({ page, baseURL }) => { - const testID = '226f6d4f44ae3f80'; - - await page.goto( baseURL + '/test/' + testID ); - await expect(page).toHaveURL( baseURL + '/en/result/' + testID ); - }); -}); diff --git a/e2e/utils/app.utils.ts b/e2e/utils/app.utils.ts index fd08d20f..ca238aec 100644 --- a/e2e/utils/app.utils.ts +++ b/e2e/utils/app.utils.ts @@ -1,23 +1,89 @@ -export function goToHome(page) { +import { expect, type Page } from "@playwright/test"; +import { findMockResponse } from "../interceptors/mock.interceptor"; + +export function goToHome(page: Page) { return page.goto('/'); } -export function setLang(page, lang) { +export async function mounted(page: Page) { + await expect(page.locator('body')).toHaveAttribute('data-domain-test-hydrated', 'true'); +} + +export async function setupApiMocks(page: Page) { + // Match any URL ending with /api + await page.route(/\/api$/, async (route) => { + const request = route.request(); + const method = request.method(); + const url = request.url(); + + let body; + try { + body = request.postDataJSON(); + } catch (e) { + body = null; + } + + const mockResponse = findMockResponse(url, method, body); + + if (mockResponse) { + await route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify(mockResponse), + }); + } else { + console.log('⚠️ No mock found for request:', { method: body?.method, params: body?.params }); + // If no mock is found, continue with the actual request + await route.continue(); + } + }); +} + +export function setLang(page: Page, lang: string) { return Promise.all([ - page.waitForSelector('select#languageSelection'), - page.locator('select#languageSelection').selectOption(lang), + page.waitForSelector('select#languageSwitcher'), + page.locator('select#languageSwitcher').selectOption(lang), ]); } -export async function showOptions(page) { - const showOptionSwitch = page.locator('#advanced-toggle'); - const advancedOption = page.locator('#advanced-options'); - if ((await advancedOption.getAttribute('open')) === null ) { - return showOptionSwitch.click(); - } +export async function closeOptions(page: Page) { + const toggle = page.locator('#advanced-toggle'); + const panel = page.locator('#advanced-options'); + + // Ensure the toggle is visible/ready + await expect(toggle).toBeVisible(); + + // If it's currently open, close it + if (await toggle.getAttribute('aria-expanded') === 'true') { + await toggle.click(); + } + + // Confirm it's actually closed + await expect(toggle).toHaveAttribute('aria-expanded', 'false'); + + // Wait for the panel to be hidden / detached + await panel.waitFor({ state: 'hidden' }); +} + +export async function showOptions(page: Page) { + const toggle = page.locator('#advanced-toggle'); + + // Wait for toggle to be ready + await expect(toggle).toBeVisible(); + + // Click if not already open + if (await toggle.getAttribute('aria-expanded') !== 'true') { + await toggle.click(); + } + + // Ensure it's REALLY open + await expect(toggle).toHaveAttribute('aria-expanded', 'true'); + + // Wait for the content you're about to use + await page.locator('#advanced-options').waitFor({ state: 'visible' }); } -export function clearBrowserCache(page) { +export function clearBrowserCache(page: Page) { return Promise.all([ page.evaluate(() => window.localStorage.clear()), page.evaluate(() => window.sessionStorage.clear()), diff --git a/messages/da.json b/messages/da.json new file mode 100644 index 00000000..ead1ac67 --- /dev/null +++ b/messages/da.json @@ -0,0 +1,86 @@ +{ + "startTestNav": "Kør test", + "faqNav": "FAQ", + "welcome": "Velkommen til Zonemaster", + "startTestTitle": "Tjek, hvordan dit domæne klarer sig", + "runTestTitle": "Test dit domæne", + "faqTitle": "Ofte stillede spørgsmål", + "resultTitle": "Testresultat", + "langLabel": "Skift sprog", + "startTestBtn": "Kør test", + "runningTest": "Kører test...", + "menu": "Menu", + "close": "Luk", + "domain": "Domæne", + "domainName": "Domænenavn", + "showOptions": "Vis indstillinger", + "hideOptions": "Skjul indstillinger", + "noticeHeading": "Bemærk! Mere info om ikke-delegeret test", + "noticeLink": "/da/faq/#undelegated", + "noticeText": "Hvad er en ikke-delegeret domænetest?", + "nameServers": "Navneservere", + "nameserver": "Navneserver {index}", + "deleteNameserver": "Slet navneserver {index}", + "name": "Navn", + "addressOptional": "Adresse (valgfrit)", + "fetchNameservers": "Hent navneservere fra forældrezone", + "noNameservers": "Ingen navneservere fundet i forældrezone", + "fetching": "Henter...", + "DSRecords": "DS-poster", + "dsRecord": "DS-post {index}", + "deleteDSRecord": "Slet DS-post {index}", + "fetchDSRecords": "Hent DS fra forældrezone", + "noDSRecords": "Ingen DS-poster fundet i forældrezone", + "keytag": "Keytag", + "algorithm": "Algoritme", + "digestType": "Digesttype", + "digest": "Digest", + "deleteRow": "Slet række", + "general": "Generelt", + "disable": "Deaktiver", + "only": "kun", + "ipv4AndIpv6": "IPv4 og IPv6", + "resetForm": "Nulstil formularen", + "programVersions": "Programversioner", + "sourceCode": "Kildekode", + "documentation": "Dokumentation", + "copyright": "Ophavsret © AFNIC og The Swedish Internet Foundation. Alle rettigheder forbeholdes", + "infoHeading1": "Hvad er Zonemaster?", + "infoPreamble": "Giv dit domænenavn en fuldstændig undersøgelse! Zonemaster hjælper dig med at vurdere, hvordan dit domænenavn klarer sig.", + "infoTextParagraph1": "Når et domænenavn sendes til Zonemaster til test, undersøger Zonemaster tilstanden af domænenavnet fra toppen til bunden af DNS-træet. Dette gøres normalt ved at undersøge DNS-data fra roden, '.', til Top-Level Domain (TLD) for det pågældende domænenavn, som f.eks. '.net', og derefter endelig gennem DNS-servere, der indeholder autoritative oplysninger om det angivne domænenavn.", + "infoTextStrong": "Zonemaster udfører mange tests,", + "infoTextParagraph2": "som f.eks. at kontrollere DNSSEC-signaturer, eller at forskellige værter kan få adgang, og at IP-adresser er gyldige. Alt dette for at sikre, at dit domænenavn fungerer så glat som muligt.", + "infoHeading2": "Et ord om DNS", + "infoTextParagraph3": "Domain Name System (DNS) er en database, der forbinder domænenavne til Internet Protocol (IP)-adresser, på samme måde som en telefonbog forbinder navne til telefonnumre. En IP-adresse er en unik række tal, der identificerer hver computer, der er forbundet til internettet. Det er ligesom måden, hvorpå hvert telefon har sit eget nummer i telefonnettet. Sådanne lange rækker af tal fungerer fint for computere, men for mennesker er det meget sværere at huske. Derfor er DNS blevet udviklet som et ekstra lag til at kortlægge mellem navne, som vi kan huske bedre, og IP-adresser, som computere bruger hver gang, vi vil nå en bestemt hjemmeside eller bruge andre tjenester på internettet, som f.eks. e-mail.", + "img1Alt": "Person, der ser på en computer", + "img2Alt": "Verden forbundet af et netværk", + "faqPreamble": "Find svar på almindelige spørgsmål om Zonemaster her.", + "faqTextParagraph1": "Du finder stadig ikke de oplysninger, du leder efter? Du kan kontakte Zonemaster-projektteamet ved hjælp af", + "faqParagraph1Link": "brugermailinglisten, problemsporet eller kontakt-e-mailadressen.", + "history": "Historie", + "testHistory": "Testhistorie", + "undelegated": "Ikke-delegeret", + "delegated": "Delegeret", + "historyAll": "Alle", + "all": "Alle", + "info": "Info", + "notice": "Bemærk", + "warning": "Advarsel", + "error": "Fejl", + "critical": "Kritisk", + "expandAll": "Udvid alle moduler", + "collapseAll": "Fold alle moduler sammen", + "search": "Søg", + "searchInText": "Søg tekst i beskeder", + "testResultFor": "Testresultat for", + "createdOn": "Oprettet den", + "filterSeverityLevels": "Filtrer sværhedsgrader", + "profile": "Profil", + "tldURL": "TLD-URL", + "exportResult": "Eksportér", + "exportJson": "JSON", + "exportHtml": "HTML", + "exportCsv": "CSV", + "exportText": "Tekst", + "share": "Del" +} diff --git a/messages/en.json b/messages/en.json new file mode 100644 index 00000000..d26c003a --- /dev/null +++ b/messages/en.json @@ -0,0 +1,86 @@ +{ + "startTestNav": "Start test", + "faqNav": "FAQ", + "welcome": "Welcome to Zonemaster", + "startTestTitle": "Check how your domain is doing", + "runTestTitle": "Test your domain", + "faqTitle": "Frequently Asked Questions", + "resultTitle": "Test result", + "langLabel": "Change language", + "startTestBtn": "Run test", + "runningTest": "Running test...", + "menu": "Menu", + "close": "Close", + "domain": "Domain", + "domainName": "Domain name", + "showOptions": "Show options", + "hideOptions": "Hide options", + "noticeHeading": "Notice! More info on undelegated test", + "noticeLink": "/en/faq/#undelegated", + "noticeText": "What is an undelegated domain test?", + "nameServers": "Nameservers", + "nameserver": "Nameserver {index}", + "deleteNameserver": "Delete nameserver {index}", + "name": "Name", + "addressOptional": "Address (optional)", + "fetchNameservers": "Fetch nameservers from parent zone", + "noNameservers": "No nameservers found in parent zone", + "fetching": "Fetching...", + "DSRecords": "DS records", + "dsRecord": "DS record {index}", + "deleteDSRecord": "Delete DS record {index}", + "fetchDSRecords": "Fetch DS from parent zone", + "noDSRecords": "No DS records found in parent zone", + "keytag": "Keytag", + "algorithm": "Algorithm", + "digestType": "Digest type", + "digest": "Digest", + "deleteRow": "Delete row", + "general": "General", + "disable": "Disable", + "only": "only", + "ipv4AndIpv6": "IPv4 and IPv6", + "resetForm": "Reset the form", + "programVersions": "Program versions", + "sourceCode": "Source code", + "documentation": "Documentation", + "copyright": "Copyright © AFNIC and The Swedish Internet Foundation. All Rights Reserved", + "infoHeading1": "What is Zonemaster?", + "infoPreamble": "Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing.", + "infoTextParagraph1": "When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name.", + "infoTextStrong": "Zonemaster performs many tests,", + "infoTextParagraph2": "such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible.", + "infoHeading2": "A word about the DNS", + "infoTextParagraph3": "The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail.", + "img1Alt": "Person looking at computer", + "img2Alt": "The world connected by a network", + "faqPreamble": "Find answers to common questions about Zonemaster here.", + "faqTextParagraph1": "You still don't find the information you are looking for? You can contact the Zonemaster project team using the", + "faqParagraph1Link": "user mailing list, the issue tracker or the contact e-mail address.", + "history": "History", + "testHistory": "Test history", + "undelegated": "Undelegated", + "delegated": "Delegated", + "historyAll": "All", + "all": "All", + "info": "Info", + "notice": "Notice", + "warning": "Warning", + "error": "Error", + "critical": "Critical", + "expandAll": "Expand all modules", + "collapseAll": "Collapse all modules", + "search": "Search", + "searchInText": "Search text in messages", + "testResultFor": "Test result for", + "createdOn": "Created on", + "filterSeverityLevels": "Filter severity levels", + "profile": "Profile", + "tldURL": "TLD URL", + "exportResult": "Export", + "exportJson": "JSON", + "exportHtml": "HTML", + "exportCsv": "CSV", + "exportText": "Text", + "share": "Share" +} diff --git a/messages/es.json b/messages/es.json new file mode 100644 index 00000000..c21058e1 --- /dev/null +++ b/messages/es.json @@ -0,0 +1,86 @@ +{ + "startTestNav": "Iniciar prueba", + "faqNav": "Preguntas frecuentes", + "welcome": "Bienvenido a Zonemaster", + "startTestTitle": "Comprueba cómo está tu dominio", + "runTestTitle": "Prueba tu dominio", + "faqTitle": "Preguntas Frecuentes", + "resultTitle": "Resultado de la prueba", + "langLabel": "Cambiar idioma", + "startTestBtn": "Ejecutar prueba", + "runningTest": "Ejecutando prueba...", + "menu": "Menú", + "close": "Cerrar", + "domain": "Dominio", + "domainName": "Nombre de dominio", + "showOptions": "Mostrar opciones", + "hideOptions": "Ocultar opciones", + "noticeHeading": "¡Atención! Más información sobre la prueba no delegada", + "noticeLink": "/es/faq/#undelegated", + "noticeText": "¿Qué es una prueba de dominio no delegado?", + "nameServers": "Servidores de nombres", + "nameserver": "Servidor de nombres {index}", + "deleteNameserver": "Eliminar servidor de nombres {index}", + "name": "Nombre", + "addressOptional": "Dirección (opcional)", + "fetchNameservers": "Obtener servidores de nombres del dominio padre", + "noNameservers": "No se encontraron servidores de nombres en el dominio padre", + "fetching": "Obteniendo...", + "DSRecords": "Registros DS", + "dsRecord": "Registro DS {index}", + "deleteDSRecord": "Eliminar registro DS {index}", + "fetchDSRecords": "Obtener DS del dominio padre", + "noDSRecords": "No se encontraron registros DS en el dominio padre", + "keytag": "Etiqueta de clave", + "algorithm": "Algoritmo", + "digestType": "Tipo de resumen", + "digest": "Resumen", + "deleteRow": "Eliminar fila", + "general": "General", + "disable": "Deshabilitar", + "only": "solo", + "ipv4AndIpv6": "IPv4 e IPv6", + "resetForm": "Restablecer el formulario", + "programVersions": "Versiones del programa", + "sourceCode": "Código fuente", + "documentation": "Documentación", + "copyright": "Derechos de autor © AFNIC y The Swedish Internet Foundation. Todos los derechos reservados", + "infoHeading1": "¿Qué es Zonemaster?", + "infoPreamble": "¡Da a tu nombre de dominio un chequeo completo! Zonemaster te ayuda a evaluar cómo está tu nombre de dominio.", + "infoTextParagraph1": "Cuando un nombre de dominio se envía a Zonemaster para su prueba, Zonemaster investiga el estado del nombre de dominio desde la parte superior hasta la parte inferior del árbol DNS. Esto generalmente se hace examinando los datos DNS desde la raíz, '.', hasta el Dominio de Nivel Superior (TLD) para ese nombre de dominio, como '.net', y luego finalmente a través de los servidores DNS que contienen información autoritativa sobre el nombre de dominio especificado.", + "infoTextStrong": "Zonemaster realiza muchas pruebas,", + "infoTextParagraph2": "como verificar las firmas DNSSEC, o que diferentes hosts puedan ser accedidos y que las direcciones IP sean válidas. Todo esto es para asegurarse de que tu nombre de dominio funcione lo más suavemente posible.", + "infoHeading2": "Una palabra sobre el DNS", + "infoTextParagraph3": "El Sistema de Nombres de Dominio (DNS) es una base de datos que asocia nombres de dominio con direcciones de Protocolo de Internet (IP), de la misma manera que un directorio telefónico asocia nombres con números de teléfono. Una dirección IP es una serie única de números que identifica cada computadora que está conectada a Internet. Es similar a la forma en que cada teléfono tiene su propio número en la red telefónica. Tales series largas de números funcionan bien para las computadoras, pero para las personas es mucho más difícil memorizarlas. Por lo tanto, el DNS se ha desarrollado como una capa adicional para mapear entre nombres que podemos recordar mejor y direcciones IP utilizadas por las computadoras cada vez que queremos alcanzar un sitio web específico o usar otros servicios en Internet, como el correo electrónico.", + "img1Alt": "Persona mirando una computadora", + "img2Alt": "El mundo conectado por una red", + "faqPreamble": "Encuentra respuestas a preguntas comunes sobre Zonemaster aquí.", + "faqTextParagraph1": "¿Todavía no encuentras la información que estás buscando? Puedes contactar al equipo del proyecto Zonemaster usando la", + "faqParagraph1Link": "lista de correo de usuarios, el rastreador de problemas o la dirección de correo electrónico de contacto.", + "history": "Historial", + "testHistory": "Historial de pruebas", + "undelegated": "No delegado", + "delegated": "Delegado", + "historyAll": "Todo", + "all": "Todo", + "info": "Información", + "notice": "Aviso", + "warning": "Advertencia", + "error": "Error", + "critical": "Crítico", + "expandAll": "Expandir todos los módulos", + "collapseAll": "Colapsar todos los módulos", + "search": "Buscar", + "searchInText": "Buscar texto en mensajes", + "testResultFor": "Resultado de la prueba para", + "createdOn": "Creado el", + "filterSeverityLevels": "Filtrar niveles de gravedad", + "profile": "Perfil", + "tldURL": "URL del TLD", + "exportResult": "Exportar", + "exportJson": "JSON", + "exportHtml": "HTML", + "exportCsv": "CSV", + "exportText": "Texto", + "share": "Compartir" +} diff --git a/messages/fi.json b/messages/fi.json new file mode 100644 index 00000000..c8c3ac0a --- /dev/null +++ b/messages/fi.json @@ -0,0 +1,86 @@ +{ + "startTestNav": "Aloita testi", + "faqNav": "UKK", + "welcome": "Tervetuloa Zonemasteriin", + "startTestTitle": "Tarkista, kuinka verkkotunnuksesi toimii", + "runTestTitle": "Testaa verkkotunnuksesi", + "faqTitle": "Usein kysytyt kysymykset", + "resultTitle": "Testitulokset", + "langLabel": "Vaihda kieli", + "startTestBtn": "Suorita testi", + "runningTest": "Suoritetaan testi...", + "menu": "Valikko", + "close": "Sulje", + "domain": "Verkkotunnus", + "domainName": "Verkkotunnuksen nimi", + "showOptions": "Näytä vaihtoehdot", + "hideOptions": "Piilota vaihtoehdot", + "noticeHeading": "Huomio! Lisätietoja ei-delegoidusta testistä", + "noticeLink": "/fi/faq/#undelegated", + "noticeText": "Mikä on ei-delegoitu verkkotunnustesti?", + "nameServers": "Nimipalvelimet", + "nameserver": "Nimipalvelin {index}", + "deleteNameserver": "Poista nimipalvelin {index}", + "name": "Nimi", + "addressOptional": "Osoite (valinnainen)", + "fetchNameservers": "Hae nimipalvelimet vanhemmasta vyöhykkeestä", + "noNameservers": "Ei nimipalvelimia löytynyt vanhemmasta vyöhykkeestä", + "fetching": "Haetaan...", + "DSRecords": "DS-tietueet", + "dsRecord": "DS-tietue {index}", + "deleteDSRecord": "Poista DS-tietue {index}", + "fetchDSRecords": "Hae DS ylätason vyöhykkeeltä", + "noDSRecords": "Ei löytynyt DS-tietueita ylätason vyöhykkeeltä", + "keytag": "Keytag", + "algorithm": "Algoritmi", + "digestType": "Tiivisteen tyyppi", + "digest": "Tiiviste", + "deleteRow": "Poista rivi", + "general": "Yleinen", + "disable": "Poista käytöstä", + "only": "vain", + "ipv4AndIpv6": "IPv4 ja IPv6", + "resetForm": "Nollaa lomake", + "programVersions": "Ohjelmaversiot", + "sourceCode": "Lähdekoodi", + "documentation": "Dokumentaatio", + "copyright": "Copyright © AFNIC ja The Swedish Internet Foundation. Kaikki oikeudet pidätetään.", + "infoHeading1": "Mikä on Zonemaster?", + "infoPreamble": "Tee verkkotunnuksellesi perusteellinen DNS-laatutarkastus – Zonemaster auttaa arvioimaan verkkotunnuksesi toimivuutta ja teknistä laatua.", + "infoTextParagraph1": "Kun verkkotunnus lähetetään Zonemasterille testattavaksi, Zonemaster tutkii verkkotunnuksen tilan DNS-puun yläosasta alosaan. Tämä tehdään yleensä tarkastelemalla DNS-tietoja juuresta, '.', verkkotunnuksen Top-Level Domain (TLD) kuten '.net', ja sitten lopulta DNS-palvelimien kautta, jotka sisältävät tietoa määritellystä verkkotunnuksesta.", + "infoTextStrong": "Zonemaster suorittaa monia testejä,", + "infoTextParagraph2": "esimerkiksi DNSSEC-allekirjoitusten tarkistaminen tai että eri isäntiä voidaan käyttää ja että IP-osoitteet ovat kelvollisia. Kaikki tämä on varmistettava, että verkkotunnuksesi toimii mahdollisimman sujuvasti.", + "infoHeading2": "Sana DNS:stä", + "infoTextParagraph3": "Domain Name System (DNS) on nimipalvelujärjestelmä, joka yhdistää verkkotunnukset Internet Protocol (IP) -osoitteisiin samaan tapaan kuin puhelinluettelo yhdistää nimet puhelinnumeroihin. IP-osoite on verkkoyhteydessä käytettävä osoite, joka yksilöi yhteyden määränpään Internetissä, mutta koska tällaiset numerosarjat ovat ihmisille vaikeita muistaa, DNS toimii välikerroksena, joka muuntaa helposti muistettavat verkkotunnusnimet laitteiden käyttämiksi IP-osoitteiksi ja mahdollistaa verkkosivustojen ja muiden Internet-palveluiden, kuten sähköpostin, käytön nimien avulla.", + "img1Alt": "Henkilö katsoo tietokonetta", + "img2Alt": "Maailma yhdistetty verkossa", + "faqPreamble": "Löydä vastauksia yleisimpiin kysymyksiin Zonemasterista täältä.", + "faqTextParagraph1": "Etkö vielä löydä etsimääsi tietoa? Voit ottaa yhteyttä Zonemaster-projektitiimiin käyttämällä", + "faqParagraph1Link": "Postituslistaa, ongelmarekisteriä tai yhteystietoja.", + "history": "Historia", + "testHistory": "Testihistoria", + "undelegated": "Ei-delegoitu", + "delegated": "Delegoitu", + "historyAll": "Kaikki", + "all": "Kaikki", + "info": "Info", + "notice": "Huomio", + "warning": "Varoitus", + "error": "Virhe", + "critical": "Kriittinen", + "expandAll": "Laajenna kaikki moduulit", + "collapseAll": "Supista kaikki moduulit", + "search": "Etsi", + "searchInText": "Etsi tekstiä viesteistä", + "testResultFor": "Testitulokset", + "createdOn": "Luotu", + "filterSeverityLevels": "Suodata vakavuustasot", + "profile": "Profiili", + "tldURL": "TLD-URL", + "exportResult": "Vie", + "exportJson": "JSON", + "exportHtml": "HTML", + "exportCsv": "CSV", + "exportText": "Teksti", + "share": "Jaa" +} diff --git a/messages/fr.json b/messages/fr.json new file mode 100644 index 00000000..153a8bd1 --- /dev/null +++ b/messages/fr.json @@ -0,0 +1,86 @@ +{ + "startTestNav": "Démarrer un test", + "faqNav": "FAQ", + "welcome": "Bienvenue sur Zonemaster", + "startTestTitle": "Vérifiez l'état de votre domaine", + "runTestTitle": "Testez votre domaine", + "faqTitle": "Questions fréquentes", + "resultTitle": "Résultat du test", + "langLabel": "Changer de langue", + "startTestBtn": "Lancer un test", + "runningTest": "Test en cours...", + "menu": "Menu", + "close": "Fermer", + "domain": "Domaine", + "domainName": "Nom de domaine", + "showOptions": "Afficher les options", + "hideOptions": "Masquer les options", + "noticeHeading": "Info ! Plus d'infos sur le test non délégué", + "noticeLink": "/fr/faq/#undelegated", + "noticeText": "Qu'est-ce qu'un test de domaine non délégué ?", + "nameServers": "Serveurs de noms", + "nameserver": "Serveur de noms {index}", + "deleteNameserver": "Supprimer le serveur de noms {index}", + "name": "Nom", + "addressOptional": "Adresse (facultatif)", + "fetchNameservers": "Récupérer les serveurs de noms à partir de la zone parente", + "noNameservers": "Aucun serveur de noms trouvé dans la zone parent", + "fetching": "Récupération en cours...", + "DSRecords": "Enregistrements DS", + "dsRecord": "Enregistrement DS {index}", + "deleteDSRecord": "Supprimer l'enregistrement DS {index}", + "fetchDSRecords": "Récupérer les DS à partir de la zone parent", + "noDSRecords": "Aucun enregistrement DS trouvé dans la zone parent", + "keytag": "Identifiant de clé", + "algorithm": "Algorithme", + "digestType": "Type de condensat", + "digest": "Condensat", + "deleteRow": "Supprimer la ligne", + "general": "Général", + "disable": "Désactiver", + "only": "seulement", + "ipv4AndIpv6": "IPv4 et IPv6", + "resetForm": "Réinitialiser le formulaire", + "programVersions": "Versions du programme", + "sourceCode": "Code source", + "documentation": "Documentation", + "copyright": "Copyright © AFNIC et The Swedish Internet Foundation. Tous droits réservés", + "infoHeading1": "Qu'est-ce que Zonemaster ?", + "infoPreamble": "Offrez à votre nom de domaine un examen complet ! Zonemaster vous aide à évaluer l'état de votre nom de domaine.", + "infoTextParagraph1": "Lorsque vous envoyez un nom de domaine à Zonemaster pour un test, Zonemaster examine l'état du nom de domaine de la racine à la base de l'arbre DNS. Cela se fait généralement en examinant les données DNS de la racine, « . », au domaine de premier niveau (TLD) pour ce nom de domaine, comme « .net », puis au moyen des serveurs DNS qui contiennent les informations faisant autorité sur le nom de domaine spécifié.", + "infoTextStrong": "Zonemaster effectue de nombreux tests,", + "infoTextParagraph2": "comme la vérification des signatures DNSSEC ou la joignabilité des différents hôtes et la validité des adresses IP. Tout cela pour s'assurer que votre nom de domaine fonctionne aussi bien que possible.", + "infoHeading2": "Un mot sur le DNS", + "infoTextParagraph3": "Le système de noms de domaine (DNS) est une base de données qui associe aux noms de domaine des adresses du protocole Internet (IP), de la même manière qu'un annuaire associe aux noms des numéros de téléphone. Une adresse IP est une série unique de nombres qui identifie chaque ordinateur connecté à Internet. C'est similaire à la manière dont chaque téléphone a son propre numéro dans le réseau téléphonique. De telles longues séries de nombres fonctionnent bien pour les ordinateurs, mais pour les personnes, il est beaucoup plus difficile de les mémoriser. Ainsi, le DNS a été développé comme une couche supplémentaire pour faire le lien entre des noms que nous pouvons mieux retenir et des adresses IP utilisées par les ordinateurs chaque fois que nous voulons atteindre un site Web spécifique ou utiliser d'autres services sur Internet, comme le courrier électronique.", + "img1Alt": "Personne regardant un ordinateur", + "img2Alt": "Le monde connecté par un réseau", + "faqPreamble": "Trouvez des réponses aux questions courantes sur Zonemaster ici.", + "faqTextParagraph1": "Vous ne trouvez toujours pas les informations que vous cherchez ? Vous pouvez contacter l'équipe du projet Zonemaster en utilisant la", + "faqParagraph1Link": "liste de diffusion des utilisateurs, le suivi des problèmes ou l'adresse e-mail de contact.", + "history": "Historique", + "testHistory": "Historique des tests", + "undelegated": "Non délégué", + "delegated": "Délégué", + "historyAll": "Tous", + "all": "Tous", + "info": "Info", + "notice": "Note", + "warning": "Avertissement", + "error": "Erreur", + "critical": "Critique", + "expandAll": "Développer tous les modules", + "collapseAll": "Réduire tous les modules", + "search": "Rechercher", + "searchInText": "Rechercher du texte dans les messages", + "testResultFor": "Résultat du test pour", + "createdOn": "Créé le", + "filterSeverityLevels": "Filtrer les niveaux de sévérité", + "profile": "Profil", + "tldURL": "URL du TLD", + "exportResult": "Exporter", + "exportJson": "JSON", + "exportHtml": "HTML", + "exportCsv": "CSV", + "exportText": "Texte", + "share": "Partager" +} diff --git a/messages/nb.json b/messages/nb.json new file mode 100644 index 00000000..ad9c3abc --- /dev/null +++ b/messages/nb.json @@ -0,0 +1,86 @@ +{ + "startTestNav": "Start sjekk", + "faqNav": "FAQ", + "welcome": "Velkommen til Zonemaster", + "startTestTitle": "Sjekk hvordan ditt domene fungerer", + "runTestTitle": "Sjekk ditt domene", + "faqTitle": "Ofte stilte spørsmål", + "resultTitle": "Testresultat", + "langLabel": "Endre språk", + "startTestBtn": "Start sjekk", + "runningTest": "Kjører test...", + "menu": "Meny", + "close": "Lukk", + "domain": "Domene", + "domainName": "Domenenavn", + "showOptions": "Vis alternativer", + "hideOptions": "Skjul alternativer", + "noticeHeading": "NB! Mer informasjon om udelegerte sjekker", + "noticeLink": "/nb/faq/#undelegated", + "noticeText": "Hva er en udelegert domenesjekk?", + "nameServers": "Navnetjenere", + "nameserver": "Navnetjener {index}", + "deleteNameserver": "Slett navnetjener {index}", + "name": "Navn", + "addressOptional": "Adresse (valgfritt)", + "fetchNameservers": "Hent navnetjenere fra overordnet sone", + "noNameservers": "Ingen navnetjenere funnet i overordnet sone", + "fetching": "Henter...", + "DSRecords": "DS-oppføringer", + "dsRecord": "DS-oppføring {index}", + "deleteDSRecord": "Slett DS-oppføring {index}", + "fetchDSRecords": "Hent DS fra overordnet sone", + "noDSRecords": "Ingen DS-oppføringer funnet i overordnet sone", + "keytag": "Nøkkelmerke", + "algorithm": "Algoritme", + "digestType": "Digest-type", + "digest": "Digest", + "deleteRow": "Slett rad", + "general": "Generelt", + "disable": "Deaktivér", + "only": "bare", + "ipv4AndIpv6": "IPv4 og IPv6", + "resetForm": "Tilbakestill skjema", + "programVersions": "Programversjoner", + "sourceCode": "Kildekode", + "documentation": "Dokumentasjon", + "copyright": "Opphavsrett © AFNIC og The Swedish Internet Foundation. Alle rettigheter reservert", + "infoHeading1": "Hva er Zonemaster?", + "infoPreamble": "Gi ditt domene et fullstendig helsesjekk! Zonemaster hjelper deg med å vurdere hvordan ditt domene fungerer.", + "infoTextParagraph1": "Når en domene sendes til Zonemaster for testing, undersøker Zonemaster tilstanden til domenen fra toppen til bunnen av DNS-treet. Dette gjøres vanligvis ved å undersøke DNS-data fra roten, '.', til Top-Level Domain (TLD) for den domenen, som '.net', og deretter gjennom DNS-servere som inneholder autoritativ informasjon om den spesifiserte domenen.", + "infoTextStrong": "Zonemaster utfører mange tester,", + "infoTextParagraph2": "som å sjekke DNSSEC-signaturer, eller at ulike vertsmaskiner kan tilgangs og at IP-adresser er gyldige. Alt dette for å sikre at din domene fungerer så jevnt som mulig.", + "infoHeading2": "Et ord om DNS", + "infoTextParagraph3": "Domain Name System (DNS) er en database som knytter domenenavn til Internet Protocol (IP) adresser, på samme måte som en telefonbok knytter navn til telefonnummer. En IP-adresse er en unik rekke tall som identifiserer hver datamaskin som er koblet til Internett. Det er likt måten hver telefon har sitt eget nummer i telefonnettet. Slike lange rekker av tall fungerer fint for datamaskiner, men for mennesker er det mye vanskeligere å huske. Dermed har DNS blitt utviklet som et ekstra lag for å kartlegge mellom navn som vi kan huske bedre og IP-adresser brukt av datamaskiner når vi vil nå en bestemt nettsted eller bruke andre tjenester på Internett, som e-post.", + "img1Alt": "Person som ser på datamaskin", + "img2Alt": "Verden koblet sammen av et nettverk", + "faqPreamble": "Finn svar på vanlige spørsmål om Zonemaster her.", + "faqTextParagraph1": "Finn du fremdeles ikke informasjonen du leter etter? Du kan kontakte Zonemaster-prosjektteamet ved å bruke", + "faqParagraph1Link": "brukerpostlisten, problemsporingen eller kontakt-e-postadressen.", + "history": "Historie", + "testHistory": "Testhistorie", + "undelegated": "Udelegerte", + "delegated": "Delegerte", + "historyAll": "Alle", + "all": "Alle", + "info": "Info", + "notice": "Merknad", + "warning": "Advarsel", + "error": "Feil", + "critical": "Kritisk", + "expandAll": "Utvid alle moduler", + "collapseAll": "Minimer alle moduler", + "search": "Søk", + "searchInText": "Søk tekst i meldinger", + "testResultFor": "Testresultat for", + "createdOn": "Opprettet", + "filterSeverityLevels": "Filtrer alvorlighetsgrader", + "profile": "Profil", + "tldURL": "TLD-URL", + "exportResult": "Eksportér", + "exportJson": "JSON", + "exportHtml": "HTML", + "exportCsv": "CSV", + "exportText": "Tekst", + "share": "Del" +} diff --git a/messages/sl.json b/messages/sl.json new file mode 100644 index 00000000..aad4efd5 --- /dev/null +++ b/messages/sl.json @@ -0,0 +1,86 @@ +{ + "startTestNav": "Začni test", + "faqNav": "Pogosta vprašanja", + "welcome": "Dobrodošli v Zonemaster", + "startTestTitle": "Preverite, kako deluje vaša domena", + "runTestTitle": "Preverite svojo domeno", + "faqTitle": "Pogosta vprašanja", + "resultTitle": "Rezultati testa", + "langLabel": "Spremenite jezik", + "startTestBtn": "Začni test", + "runningTest": "Potekajoči test...", + "menu": "Meni", + "close": "Zapri", + "domain": "Domena", + "domainName": "Ime domene", + "showOptions": "Pokaži možnosti", + "hideOptions": "Skrij možnosti", + "noticeHeading": "Opozorilo! Več informacij o neposrednem testu", + "noticeLink": "/sl/faq/#undelegated", + "noticeText": "Kaj je test nedelegirane domene?", + "nameServers": "Imenski strežniki", + "nameserver": "Imenski strežniki {index}", + "deleteNameserver": "Izbriši imenske strežnike {index}", + "name": "Ime", + "addressOptional": "Naslov (neobvezno)", + "fetchNameservers": "Pridobite imena strežnikov iz starševske cone", + "noNameservers": "V starševski coni ni najdenih imenskih strežnikov", + "fetching": "Pridobivam...", + "DSRecords": "DS zapisi", + "dsRecord": "DS zapis {index}", + "deleteDSRecord": "Izbriši DS zapis {index}", + "fetchDSRecords": "Pridobite DS zapise iz starševske cone", + "noDSRecords": "V starševski coni ni najdenih DS zapisov", + "keytag": "Keytag", + "algorithm": "Algoritem", + "digestType": "Tip izvlečka", + "digest": "Izvleček", + "deleteRow": "Izbriši vrstico", + "general": "Splošno", + "disable": "Onemogoči", + "only": "samo", + "ipv4AndIpv6": "IPv4 in IPv6", + "resetForm": "Ponastavite obrazec", + "programVersions": "Različice programa", + "sourceCode": "Izvorna koda", + "documentation": "Dokumentacija", + "copyright": "Avtorska pravica © AFNIC in The Swedish Internet Foundation. Vse pravice pridržane", + "infoHeading1": "Kaj je Zonemaster?", + "infoPreamble": "Podrobno preverite svojo domeno. Zonemaster vam pomaga pri ocenjevanju, kako deluje vaša domene.", + "infoTextParagraph1": "Zonemaster preveri stanje domene od vrha do dna DNS drevesa. To se običajno naredi s preverjanjem DNS podatkov od korena, '.', preko vrhnje domene (TLD) za to domeno, kot je '.si', in nato končno skozi DNS strežnike, ki vsebujejo avtoritativne informacije za navedeno domeno.", + "infoTextStrong": "Zonemaster izvede številne teste,", + "infoTextParagraph2": "kot je preverjanje podpisov DNSSEC ali dostop do različnih gostiteljev in veljavnost IP naslovov. Vse to je potrebno, da domena dela čim boljše.", + "infoHeading2": "Beseda o DNS", + "infoTextParagraph3": "Domain Name System (DNS) je baza podatkov, ki povezuje imena domen z naslovi Internet Protocol (IP), tako kot telefonski imenik povezuje imena s telefonskimi številkami. IP naslov je edinstvena zaporedje števil, ki identificira računalnike povezane z Internetom. To lahko primerjate s telefonom, ki ima svojo številko v telefonski mreži. Zaporedja številk delujejo dobro za računalnike, ljudje pa si jih težko zapomnijo. Zato je bil razvit DNS, kot dodatni sloj za preslikavo med številkami (IP naslovi) in imeni in obratno. ", + "img1Alt": "Oseba, ki uporablja računalnik", + "img2Alt": "Svet povezan z mrežo", + "faqPreamble": "Odgovori na pogosta vprašanja o Zonemaster.", + "faqTextParagraph1": "Še vedno niste našli informacij, ki jih iščete? Obrnite se na ekipo projekta Zonemaster z uporabo", + "faqParagraph1Link": "dopisnega seznama, sledilnika vprašanj ali naslova elektronske pošte.", + "history": "Zgodovina", + "testHistory": "Zgodovina testov", + "undelegated": "Neposredno", + "delegated": "Posredno", + "historyAll": "Vse", + "all": "Vse", + "info": "Info", + "notice": "Obvestilo", + "warning": "Opozorilo", + "error": "Napaka", + "critical": "Kritično", + "expandAll": "Razširite vse module", + "collapseAll": "Zbrišite vse module", + "search": "Išči", + "searchInText": "Išči besedilo v sporočilih", + "testResultFor": "Rezultat testa za", + "createdOn": "Ustvarjeno", + "filterSeverityLevels": "Filter težavnosti", + "profile": "Profil", + "tldURL": "TLD URL", + "exportResult": "Izvozi", + "exportJson": "JSON", + "exportHtml": "HTML", + "exportCsv": "CSV", + "exportText": "Besedilo", + "share": "Deli" +} diff --git a/messages/sv.json b/messages/sv.json new file mode 100644 index 00000000..0831cc59 --- /dev/null +++ b/messages/sv.json @@ -0,0 +1,86 @@ +{ + "startTestNav": "Kör test", + "faqNav": "Vanliga frågor", + "welcome": "Välkommen till Zonemaster", + "startTestTitle": "Kontrollera hur ditt domännamn mår", + "runTestTitle": "Testa ditt domännamn", + "faqTitle": "Vanliga frågor", + "resultTitle": "Resultat", + "langLabel": "Byt språk", + "startTestBtn": "Kör test", + "runningTest": "Testar...", + "menu": "Meny", + "close": "Stäng", + "domain": "Domän", + "domainName": "Domänamn", + "showOptions": "Fler inställningar", + "hideOptions": "Dölj inställningar", + "noticeHeading": "Info! Mer info om test av odelegerad domän", + "noticeLink": "/sv/faq/#undelegated", + "noticeText": "Vad är ett odelegerat domännamnstest?", + "nameServers": "Namnservrar", + "nameserver": "Namnserver {index}", + "deleteNameserver": "Ta bort namnserver {index}", + "name": "Namn", + "addressOptional": "Adress (valfritt)", + "fetchNameservers": "Hämta namnservrar från moderzonen", + "noNameservers": "Inga namnservrar hittades i moderzonen", + "fetching": "Hämtar...", + "DSRecords": "DS-poster", + "dsRecord": "DS record {index}", + "deleteDSRecord": "Ta bort DS-post {index}", + "fetchDSRecords": "Hämta DS-poster från moderzonen", + "noDSRecords": "Inga DS-poster hittades i moderzonen", + "keytag": "'Keytag'", + "algorithm": "Algoritm", + "digestType": "Digest-typ", + "digest": "'Digest'", + "deleteRow": "Ta bort raden", + "general": "Allmänt", + "disable": "Inaktivera", + "only": "", + "ipv4AndIpv6": "IPv4 och IPv6", + "resetForm": "Återställ formuläret", + "programVersions": "Programversioner", + "sourceCode": "Källkod", + "documentation": "Dokumentation", + "copyright": "Copyright © AFNIC och Internetstiftelsen. Alla rättigheter förbehållna", + "infoHeading1": "Vad är Zonemaster?", + "infoPreamble": "Ge ditt domännamn en komplett hälsokontroll! Zonemaster hjälper dig att bedöma hur ditt domännamn mår.", + "infoTextParagraph1": "När ett domännamn skickas till Zonemaster för testning undersöker Zonemaster domännamnets tillstånd från toppen till botten av DNS-trädet.\nDetta görs vanligtvis genom att granska DNS-data från rotzonen, ‘.’, vidare till toppdomänen (TLD) för domännamnet, som ‘.net’, och slutligen genom de namnservrar som innehåller auktoritativ information om det angivna domännamnet.", + "infoTextStrong": "Zonemaster genomför många tester,", + "infoTextParagraph2": "Till exempel kontrolleras DNSSEC-signaturer, att olika värdar är åtkomliga och att IP-adresser är giltiga. Allt detta görs för att säkerställa att ditt domännamn fungerar så smidigt som möjligt.", + "infoHeading2": "Några ord om DNS", + "infoTextParagraph3": "Domännamnssystemet (DNS) är en databas som kopplar domännamn till IP-adresser (Internet Protocol), på samma sätt som en telefonkatalog kopplar namn till telefonnummer.\n\nEn IP-adress är en unik nummerserie som identifierar varje dator eller enhet som är ansluten till internet – ungefär som varje telefon har sitt eget nummer i telefonnätet.\n\nSådana långa nummerserier fungerar utmärkt för datorer, men är betydligt svårare för människor att komma ihåg. Därför har DNS utvecklats som ett extra lager som översätter mellan namn vi människor lättare minns och IP-adresser som används av datorer, varje gång vi vill nå en viss webbplats eller använda andra internettjänster, som e-post.", + "img1Alt": "Person tittar på sin datorskärm", + "img2Alt": "Världen ihopkopplad i ett nätverk", + "faqPreamble": "Hitta svar på vanliga frågor om Zonemaster här.", + "faqTextParagraph1": "Hittar du fortfarande inte informationen du söker? Du kan kontakta Zonemaster-projektteamet via", + "faqParagraph1Link": "användarlistan, ärendehanteraren eller kontakt-e-postadressen.", + "history": "Historik", + "testHistory": "Testhistorik", + "undelegated": "Odelegerad", + "delegated": "Delegerad", + "historyAll": "Alla", + "all": "Alla", + "info": "Info", + "notice": "Notering", + "warning": "Varning", + "error": "Fel", + "critical": "Kritisk", + "expandAll": "Expandera alla moduler", + "collapseAll": "Stäng alla moduler", + "search": "Sök", + "searchInText": "Sök i textmeddelanden", + "testResultFor": "Testresultat för", + "createdOn": "Skapad", + "filterSeverityLevels": "Filtrera allvarlighetsnivå", + "profile": "Profil", + "tldURL": "TLD URL", + "exportResult": "Exportera", + "exportJson": "JSON", + "exportHtml": "HTML", + "exportCsv": "CSV", + "exportText": "Text", + "share": "Dela" +} diff --git a/package-lock.json b/package-lock.json index aad284ef..e17d61f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21025 +1,6987 @@ { - "name": "zonemaster-gui", - "version": "4.3.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "zonemaster-gui", - "version": "4.3.1", - "license": "BSD-2-Clause", - "dependencies": { - "@angular/animations": "^13.3.11", - "@angular/common": "^13.3.11", - "@angular/compiler": "^13.3.11", - "@angular/core": "^13.3.11", - "@angular/forms": "^13.3.11", - "@angular/localize": "^13.3.11", - "@angular/platform-browser": "^13.3.11", - "@angular/platform-browser-dynamic": "^13.3.11", - "@angular/router": "^13.3.11", - "@ng-bootstrap/ng-bootstrap": "^12.0.0", - "bootstrap": "^5.2.0", - "file-saver": "^2.0.2", - "fork-awesome": "^1.2.0", - "punycode": "^2.3.1", - "rxjs": "^6.6.0", - "tslib": "^2.0.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^13.3.9", - "@angular/cli": "^13.3.9", - "@angular/compiler-cli": "^13.3.11", - "@angular/language-service": "^13.3.11", - "@playwright/test": "^1.44.1", - "@types/file-saver": "^2.0.1", - "@types/node": "^13.11.0", - "archiver": "^3.1.1", - "ng-extract-i18n-merge": "^2.3.0", - "typescript": "^4.6.4" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular-devkit/architect": { - "version": "0.1303.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.9.tgz", - "integrity": "sha512-RMHqCGDxbLqT+250A0a8vagsoTdqGjAxjhrvTeq7PJmClI7uJ/uA1Fs18+t85toIqVKn2hovdY9sNf42nBDD2Q==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "13.3.9", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/build-angular": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.9.tgz", - "integrity": "sha512-1LqcMizeabx3yOkx3tptCSAoEhG6nO6hPgI/B3EJ07G/ZcoxunMWSeN3P3zT10dZMEHhcxl+8cSStSXaXj9hfA==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1303.9", - "@angular-devkit/build-webpack": "0.1303.9", - "@angular-devkit/core": "13.3.9", - "@babel/core": "7.16.12", - "@babel/generator": "7.16.8", - "@babel/helper-annotate-as-pure": "7.16.7", - "@babel/plugin-proposal-async-generator-functions": "7.16.8", - "@babel/plugin-transform-async-to-generator": "7.16.8", - "@babel/plugin-transform-runtime": "7.16.10", - "@babel/preset-env": "7.16.11", - "@babel/runtime": "7.16.7", - "@babel/template": "7.16.7", - "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.3.9", - "ansi-colors": "4.1.1", - "babel-loader": "8.2.5", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "^4.9.1", - "cacache": "15.3.0", - "circular-dependency-plugin": "5.2.2", - "copy-webpack-plugin": "10.2.1", - "core-js": "3.20.3", - "critters": "0.0.16", - "css-loader": "6.5.1", - "esbuild-wasm": "0.14.22", - "glob": "7.2.0", - "https-proxy-agent": "5.0.0", - "inquirer": "8.2.0", - "jsonc-parser": "3.0.0", - "karma-source-map-support": "1.4.0", - "less": "4.1.2", - "less-loader": "10.2.0", - "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", - "mini-css-extract-plugin": "2.5.3", - "minimatch": "3.0.5", - "open": "8.4.0", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "6.0.1", - "piscina": "3.2.0", - "postcss": "8.4.5", - "postcss-import": "14.0.2", - "postcss-loader": "6.2.1", - "postcss-preset-env": "7.2.3", - "regenerator-runtime": "0.13.9", - "resolve-url-loader": "5.0.0", - "rxjs": "6.6.7", - "sass": "1.49.9", - "sass-loader": "12.4.0", - "semver": "7.3.5", - "source-map-loader": "3.0.1", - "source-map-support": "0.5.21", - "stylus": "0.56.0", - "stylus-loader": "6.2.0", - "terser": "5.14.2", - "text-table": "0.2.0", - "tree-kill": "1.2.2", - "tslib": "2.3.1", - "webpack": "5.70.0", - "webpack-dev-middleware": "5.3.0", - "webpack-dev-server": "4.7.3", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "5.1.0" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "optionalDependencies": { - "esbuild": "0.14.22" - }, - "peerDependencies": { - "@angular/compiler-cli": "^13.0.0 || ^13.3.0-rc.0", - "@angular/localize": "^13.0.0 || ^13.3.0-rc.0", - "@angular/service-worker": "^13.0.0 || ^13.3.0-rc.0", - "karma": "^6.3.0", - "ng-packagr": "^13.0.0", - "protractor": "^7.0.0", - "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=4.4.3 <4.7" - }, - "peerDependenciesMeta": { - "@angular/localize": { - "optional": true - }, - "@angular/service-worker": { - "optional": true - }, - "karma": { - "optional": true - }, - "ng-packagr": { - "optional": true - }, - "protractor": { - "optional": true - }, - "tailwindcss": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", - "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.12", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.10", - "@babel/types": "^7.16.8", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@angular-devkit/build-webpack": { - "version": "0.1303.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.9.tgz", - "integrity": "sha512-CdYXvAN1xAik8FyfdF1B8Nt1B/1aBvkZr65AUVFOmP6wuVzcdn78BMZmZD42srYbV2449sWi5Vyo/j0a/lfJww==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1303.9", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "webpack": "^5.30.0", - "webpack-dev-server": "^4.0.0" - } - }, - "node_modules/@angular-devkit/core": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.9.tgz", - "integrity": "sha512-XqCuIWyoqIsLABjV3GQL/+EiBCt3xVPPtNp3Mg4gjBsDLW7PEnvbb81yGkiZQmIsq4EIyQC/6fQa3VdjsCshGg==", - "dev": true, - "dependencies": { - "ajv": "8.9.0", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/core/node_modules/ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", - "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/@angular-devkit/core/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/@angular-devkit/schematics": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.9.tgz", - "integrity": "sha512-oNHLNtwbtEJ0dYPPXy1NpfRdSiFsYBl7+ozJklLgNV/AEOxlSi2qlVx6DoxNVjz5XgQ7Z+eoVDMw7ewGPnGSyA==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "13.3.9", - "jsonc-parser": "3.0.0", - "magic-string": "0.25.7", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/animations": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.11.tgz", - "integrity": "sha512-KE/3RuvixHIk9YTSwaUsezsUm9Ig9Y8rZMpHOT/8bRtzPiJ5ld2GnDHjrJgyZn7TdoP4wz4YCta5eC4ycu+KCw==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "13.3.11" - } - }, - "node_modules/@angular/cli": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.9.tgz", - "integrity": "sha512-b64mfB7A8vw5QmopEnkCVhGH8zDX5FrQVKKCRlK1dO3GEtAdfhFJb5J7TBbCOwp1XfYJ5jl+biNQy4HoX5HQPw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@angular-devkit/architect": "0.1303.9", - "@angular-devkit/core": "13.3.9", - "@angular-devkit/schematics": "13.3.9", - "@schematics/angular": "13.3.9", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.3", - "ini": "2.0.0", - "inquirer": "8.2.0", - "jsonc-parser": "3.0.0", - "npm-package-arg": "8.1.5", - "npm-pick-manifest": "6.1.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "12.0.3", - "resolve": "1.22.0", - "semver": "7.3.5", - "symbol-observable": "4.0.0", - "uuid": "8.3.2" - }, - "bin": { - "ng": "bin/ng.js" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/common": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.11.tgz", - "integrity": "sha512-gPMwDYIAag1izXm2tRQ6EOIx9FVEUqLdr+qYtRVoQtoBmfkoTSLGcpeBXqqlPVxVPbA6Li1WZZT5wxLLlLAN+Q==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "13.3.11", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/compiler": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.11.tgz", - "integrity": "sha512-EV6JCBbXdHDHbPShWmymvuoxFYG0KVc8sDJpYp47WLHCY2zgZaXhvWs//Hrls3fmi+TGTekgRa2jOBBNce/Ggg==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - } - }, - "node_modules/@angular/compiler-cli": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.11.tgz", - "integrity": "sha512-cl+3Wzxt8NRi2WY+RdsxuQ3yQRUp8pSlfSlJJnfaKE1BEqap6uem2DovuhnIbmrLhxZ5xt7o+I1szyO6sn6+ag==", - "dependencies": { - "@babel/core": "^7.17.2", - "chokidar": "^3.0.0", - "convert-source-map": "^1.5.1", - "dependency-graph": "^0.11.0", - "magic-string": "^0.26.0", - "reflect-metadata": "^0.1.2", - "semver": "^7.0.0", - "sourcemap-codec": "^1.4.8", - "tslib": "^2.3.0", - "yargs": "^17.2.1" - }, - "bin": { - "ng-xi18n": "bundles/src/bin/ng_xi18n.js", - "ngc": "bundles/src/bin/ngc.js", - "ngcc": "bundles/ngcc/main-ngcc.js" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/compiler": "13.3.11", - "typescript": ">=4.4.2 <4.7" - } - }, - "node_modules/@angular/compiler-cli/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@angular/compiler-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@angular/compiler-cli/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==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/@angular/compiler-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@angular/compiler-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@angular/compiler-cli/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==" - }, - "node_modules/@angular/compiler-cli/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@angular/compiler-cli/node_modules/magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular/compiler-cli/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==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@angular/compiler-cli/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==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@angular/compiler-cli/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==", - "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/@angular/compiler-cli/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/@angular/compiler-cli/node_modules/yargs": { - "version": "17.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular/compiler-cli/node_modules/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular/core": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.11.tgz", - "integrity": "sha512-9BmE2CxyV0g+AkBeuc8IwjSOiJ8Y+kptXnqD/J8EAFT3B0/fLGVnjFdZC6Sev9L0SNZb6qdzebpfIOLqbUjReQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.11.4" - } - }, - "node_modules/@angular/forms": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.11.tgz", - "integrity": "sha512-iMgTNB+Qc3TsfAZSk1FnUE6MVoddPzxhG9AKCfSlvpjFh8VmXkIjxPL3dun7J8OjayT3X+B8f7LZ9AkKNXtBKw==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/common": "13.3.11", - "@angular/core": "13.3.11", - "@angular/platform-browser": "13.3.11", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/language-service": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.3.11.tgz", - "integrity": "sha512-EDw8L0RKrRYUYWB2P0xS1WRazYvv5gOguX+IwPZlCpR95QLQPTTpmNaqvnYjmFlvQjGHJYc8wqtJJIIMiL6FSA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - } - }, - "node_modules/@angular/localize": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-13.3.11.tgz", - "integrity": "sha512-plMAkj07mcYYsidv7R4NFRYdxQEJJMK7IGp7BeaEwtrBbplqQORIMy2HOUDet/gWg/D1b/KFTjTAhlmNdczYtg==", - "dependencies": { - "@babel/core": "7.17.2", - "glob": "7.2.0", - "yargs": "^17.2.1" - }, - "bin": { - "localize-extract": "tools/bundles/src/extract/cli.js", - "localize-migrate": "tools/bundles/src/migrate/cli.js", - "localize-translate": "tools/bundles/src/translate/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/compiler": "13.3.11", - "@angular/compiler-cli": "13.3.11" - } - }, - "node_modules/@angular/localize/node_modules/@babel/core": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.2.tgz", - "integrity": "sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw==", - "dependencies": { - "@ampproject/remapping": "^2.0.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.2", - "@babel/parser": "^7.17.0", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular/localize/node_modules/@babel/generator": { - "version": "7.19.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", - "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", - "dependencies": { - "@babel/types": "^7.19.4", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@angular/localize/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular/localize/node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@angular/localize/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@angular/localize/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@angular/localize/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==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/@angular/localize/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@angular/localize/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@angular/localize/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==" - }, - "node_modules/@angular/localize/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@angular/localize/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==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@angular/localize/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==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@angular/localize/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==", - "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/@angular/localize/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/@angular/localize/node_modules/yargs": { - "version": "17.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular/localize/node_modules/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular/platform-browser": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.11.tgz", - "integrity": "sha512-PG3chCErARb6wNzkOed2NsZmgvTmbumRx/6sMXqGkDKXYQm0JULnl4X42Rn+JCgJ9DLJi5/jrd1dbcBCrKk9Vg==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/animations": "13.3.11", - "@angular/common": "13.3.11", - "@angular/core": "13.3.11" - }, - "peerDependenciesMeta": { - "@angular/animations": { - "optional": true - } - } - }, - "node_modules/@angular/platform-browser-dynamic": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.11.tgz", - "integrity": "sha512-xM0VRC1Nw//SHO3gkghUHyjCaaQbk1UYMq4vIu3iKVq9KLqOSZgccv0NcOKHzXXN3S5RgX2auuyOUOCD6ny1Pg==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/common": "13.3.11", - "@angular/compiler": "13.3.11", - "@angular/core": "13.3.11", - "@angular/platform-browser": "13.3.11" - } - }, - "node_modules/@angular/router": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.11.tgz", - "integrity": "sha512-bJTcxDYKEyoqtsi1kJcDJWLmEN+dXpwhU07SsqUwfyN4V5fYF1ApDhpJ4c17hNdjEqe106srT9tiHXhmWayhmQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/common": "13.3.11", - "@angular/core": "13.3.11", - "@angular/platform-browser": "13.3.11", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "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/core/node_modules/@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", - "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.8", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.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.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", - "dependencies": { - "@babel/compat-data": "^7.19.3", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "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.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "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.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name/node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", - "dependencies": { - "@babel/types": "^7.19.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.26.3" - }, - "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.18.6", - "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.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@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-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@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.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "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-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-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-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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "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.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.18.6", - "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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz", - "integrity": "sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@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-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.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@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.16.8", - "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.20.2", - "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.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", - "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==", - "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.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/traverse/node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/traverse/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", - "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2", - "postcss-selector-parser": "^6.0.10" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.0.tgz", - "integrity": "sha512-YH+BnkvuCiPR+MUOY6JIArdTIGrRtsxnLaIxPRy4CpGJ/V6OO6Gq/1J+FJEc4j5e5h6Bcy3/K7prlMrm93BJoA==", - "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.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.0.0.tgz", - "integrity": "sha512-LcqVnHCjOAj8BTCtjpwYZCMTn4yArusbdObCVRUYvBHhrR5fVLVyENG+UVWM4T4H/ufv7NiBLdprllxWs/5PaQ==", - "deprecated": "incorrect UMD name", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@ng-bootstrap/ng-bootstrap": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-12.1.2.tgz", - "integrity": "sha512-p27c+mYVdHiJMYrj5hwClVJxLdiZxafAqlbw1sdJh2xJ1rGOe+H/kCf5YDRbhlHqRN+34Gr0RQqIUeD1I2V8hg==", - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/common": "^13.0.0", - "@angular/core": "^13.0.0", - "@angular/forms": "^13.0.0", - "@angular/localize": "^13.0.0", - "@popperjs/core": "^2.10.2", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@ngtools/webpack": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.9.tgz", - "integrity": "sha512-wmgOI5sogAuilwBZJqCHVMjm2uhDxjdSmNLFx7eznwGDa6LjvjuATqCv2dVlftq0Y/5oZFVrg5NpyHt5kfZ8Cg==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "@angular/compiler-cli": "^13.0.0", - "typescript": ">=4.4.3 <4.7", - "webpack": "^5.30.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/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/@npmcli/git": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", - "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", - "dev": true, - "dependencies": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - } - }, - "node_modules/@npmcli/git/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", - "dev": true, - "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", - "dev": true - }, - "node_modules/@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", - "dev": true, - "dependencies": { - "infer-owner": "^1.0.4" - } - }, - "node_modules/@npmcli/run-script": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz", - "integrity": "sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^8.2.0", - "read-package-json-fast": "^2.0.1" - } - }, - "node_modules/@playwright/test": { - "version": "1.44.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.44.1.tgz", - "integrity": "sha512-1hZ4TNvD5z9VuhNJ/walIjvMVvYkZKf71axoF/uiAqpntQJXpG64dlXhoDXE3OczPuTuvjf/M5KWFg5VAVUS3Q==", - "dev": true, - "dependencies": { - "playwright": "1.44.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@schematics/angular": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.9.tgz", - "integrity": "sha512-tm5wst7+Z8cOgOJ/4JVlYKOFCCOVnqKYFtYf0BIWq6RFBXcw6QqbGW1wXH8ASmuev4QZXKgqc7YKALPpYAKCeQ==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "13.3.9", - "@angular-devkit/schematics": "13.3.9", - "jsonc-parser": "3.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "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/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "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.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/file-saver": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.1.tgz", - "integrity": "sha512-g1QUuhYVVAamfCifK7oB7G3aIl4BbOyzDOqVyUfEr4tfBKrXfeH+M+Tg7HKCXSrbzxYdhyCP7z9WbKo0R2hBCw==", - "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.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.0.tgz", - "integrity": "sha512-uM4mnmsIIPK/yeO+42F2RQhGUIs39K2RFmugcJANppXe6J1nvH87PvzPZYpza7Xhhs8Yn9yIAVdLZ84z61+0xQ==", - "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.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "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/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.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, - "license": "BSD-3-Clause" - }, - "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, - "license": "Apache-2.0" - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "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.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "dependencies": { - "type-fest": "^0.11.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "node_modules/archiver": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", - "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", - "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^2.6.3", - "buffer-crc32": "^0.2.1", - "glob": "^7.1.4", - "readable-stream": "^3.4.0", - "tar-stream": "^2.1.0", - "zip-stream": "^2.1.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver/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/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/are-we-there-yet/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/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/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/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", - "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/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.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "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-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", - "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "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.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "node_modules/base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "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.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", - "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/bl/node_modules/buffer": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", - "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "node_modules/bl/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/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "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.13.0", - "raw-body": "2.5.2", - "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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/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, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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, - "license": "MIT" - }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", - "dev": true, - "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "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.2.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.2.tgz", - "integrity": "sha512-dEtzMTV71n6Fhmbg4fYJzQsw1N29hJKO1js5ackCgIpDcGid2ETMGC6zwSYw09v05Y+oRdQ9loC54zB1La3hHQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], - "peerDependencies": { - "@popperjs/core": "^2.11.6" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "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/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cacache/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.0.tgz", - "integrity": "sha512-CCKAP2tkPau7D3GE8+V8R6sQubA9R5foIzGp+85EXCVSCivuxBNAWqcpn72PKYiIcqoViv/kcUDpaEIMBVi1lQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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/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/caniuse-lite": { - "version": "1.0.30001687", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", - "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "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==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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/circular-dependency-plugin": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", - "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "webpack": ">=4.0.1" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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-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/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "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-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "bin": { - "color-support": "bin.js" - } - }, - "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/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/compress-commons": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", - "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", - "dev": true, - "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^3.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^2.3.6" - }, - "engines": { - "node": ">= 6" - } - }, - "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": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "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/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "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.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "dev": true, - "license": "MIT", - "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-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.1.tgz", - "integrity": "sha512-nr81NhCAIpAWXGCK5thrKmfCQ6GDY0L5RN0U+BnIn/7Us55+UCex5ANNsNKmIVtDRnk0Ecf+/kzp9SUVrrBMLg==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^12.0.2", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 12.20.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-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/copy-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/copy-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/copy-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/core-js": { - "version": "3.20.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz", - "integrity": "sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", - "dev": true, - "dependencies": { - "browserslist": "^4.21.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "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/crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "dev": true, - "dependencies": { - "buffer": "^5.1.0" - } - }, - "node_modules/crc/node_modules/buffer": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", - "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "node_modules/crc32-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", - "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", - "dev": true, - "dependencies": { - "crc": "^3.4.4", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 6.9.0" - } - }, - "node_modules/crc32-stream/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/critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "css-select": "^4.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "postcss": "^8.3.7", - "pretty-bytes": "^5.3.0" - } - }, - "node_modules/critters/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/critters/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/critters/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/critters/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/critters/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/critters/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/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, - "node_modules/css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-blank-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-has-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/css-loader": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", - "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "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-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "bin": { - "css-prefers-color-scheme": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "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-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/css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssdb": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.1.0.tgz", - "integrity": "sha512-/vqjXhv1x9eGkE/zO6o8ZOI7dgdZbLVLUGyVRbPgk6YipXbW87YzUCcO+Jrmi5bwJlAH6oD+MNeZyRgXea1GZw==", - "dev": true - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del/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/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "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/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "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": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", - "dev": true, - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "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/dunder-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", - "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", - "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "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/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "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/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz", - "integrity": "sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "esbuild-android-arm64": "0.14.22", - "esbuild-darwin-64": "0.14.22", - "esbuild-darwin-arm64": "0.14.22", - "esbuild-freebsd-64": "0.14.22", - "esbuild-freebsd-arm64": "0.14.22", - "esbuild-linux-32": "0.14.22", - "esbuild-linux-64": "0.14.22", - "esbuild-linux-arm": "0.14.22", - "esbuild-linux-arm64": "0.14.22", - "esbuild-linux-mips64le": "0.14.22", - "esbuild-linux-ppc64le": "0.14.22", - "esbuild-linux-riscv64": "0.14.22", - "esbuild-linux-s390x": "0.14.22", - "esbuild-netbsd-64": "0.14.22", - "esbuild-openbsd-64": "0.14.22", - "esbuild-sunos-64": "0.14.22", - "esbuild-windows-32": "0.14.22", - "esbuild-windows-64": "0.14.22", - "esbuild-windows-arm64": "0.14.22" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz", - "integrity": "sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz", - "integrity": "sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz", - "integrity": "sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz", - "integrity": "sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz", - "integrity": "sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz", - "integrity": "sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz", - "integrity": "sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz", - "integrity": "sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz", - "integrity": "sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz", - "integrity": "sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz", - "integrity": "sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz", - "integrity": "sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz", - "integrity": "sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz", - "integrity": "sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz", - "integrity": "sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz", - "integrity": "sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-wasm": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.22.tgz", - "integrity": "sha512-FOSAM29GN1fWusw0oLMv6JYhoheDIh5+atC72TkJKfIUMID6yISlicoQSd9gsNSFsNBvABvtE2jR4JB1j4FkFw==", - "dev": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz", - "integrity": "sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz", - "integrity": "sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz", - "integrity": "sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "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/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/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/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, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter-asyncresource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "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": "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/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "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" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "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/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/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/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "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.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "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/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": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-saver": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", - "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "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, - "license": "MIT", - "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, - "license": "MIT" - }, - "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/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fork-awesome": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fork-awesome/-/fork-awesome-1.2.0.tgz", - "integrity": "sha512-MNwTBnnudMIweHfDtTY8TeR5fxIAZ2w9o8ITn5XDySqdxa4k5AH8IuAMa89RVxDxgPNlosZxqkFKN5UmHXuYSw==", - "engines": { - "node": ">=0.10.3" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "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": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/gauge/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/gauge/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/gauge/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/gauge/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/gauge/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/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==", - "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==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz", - "integrity": "sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "dunder-proto": "^1.0.0", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "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, - "license": "BSD-2-Clause" - }, - "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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "dev": true, - "dependencies": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "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-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hdr-histogram-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, - "dependencies": { - "@assemblyscript/loader": "^0.10.1", - "base64-js": "^1.2.0", - "pako": "^1.0.3" - } - }, - "node_modules/hdr-histogram-percentiles-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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/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/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "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, - "license": "MIT", - "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-errors/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, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "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-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", - "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "dependencies": { - "ms": "^2.0.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.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "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/ignore-walk": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", - "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/inquirer": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", - "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.2.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/inquirer/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/inquirer/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/inquirer/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/inquirer/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/inquirer/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/inquirer/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/inquirer/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/inquirer/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/inquirer/node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/inquirer/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/inquirer/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/inquirer/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/ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "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-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-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==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "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": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-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-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "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-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-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/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-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "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": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "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": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true, - "engines": { - "node": ">=0.10.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==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "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/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "dependencies": { - "source-map-support": "^0.5.5" - } - }, - "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/lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/less": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", - "integrity": "sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==", - "dev": true, - "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^2.5.2", - "source-map": "~0.6.0" - } - }, - "node_modules/less-loader": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.2.0.tgz", - "integrity": "sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==", - "dev": true, - "dependencies": { - "klona": "^2.0.4" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" - } - }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/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==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "dependencies": { - "webpack-sources": "^3.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-sources": { - "optional": true - } - } - }, - "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": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - } - }, - "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.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", - "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/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==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "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/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", - "dev": true, - "dependencies": { - "fs-monkey": "^1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/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==", - "dev": true, - "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==", - "dev": true, - "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.5.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz", - "integrity": "sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw==", - "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.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", - "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.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "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/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dev": true, - "optional": true, - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "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/ng-extract-i18n-merge": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.3.0.tgz", - "integrity": "sha512-L1bsvaLiXZy7hXqizWf38Fqh/vIvPw7tKlg3a4ixE39AHwpwyYjTTN8Szp50pGYTHZiNe72n+TNblNVQAsYSTQ==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "^0.1301.0", - "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0", - "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0", - "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0", - "xliff-simple-merge": "~1.0.0", - "xml_normalize": "~0.8.4", - "xmldoc": "~1.1.2" - }, - "peerDependencies": { - "@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/architect": { - "version": "0.1301.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1301.4.tgz", - "integrity": "sha512-p6G8CEMnE+gYwxRyEttj3QGsuNJ3Kusi7iwBIzWyf2RpJSdGzXdwUEiRGg6iS0YHFr06/ZFfAWfnM2DQvNm4TA==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "13.1.4", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/core": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.1.4.tgz", - "integrity": "sha512-225Gjy4iVxh5Jo9njJnaG75M/Dt95UW+dEPCGWKV5E/++7UUlXlo9sNWq8x2vJm2nhtsPkpnXNOt4pW1mIDwqQ==", - "dev": true, - "dependencies": { - "ajv": "8.8.2", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/ng-extract-i18n-merge/node_modules/ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "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/ng-extract-i18n-merge/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/nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "!win32" - ], - "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "license": "MIT" - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", - "dev": true, - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "node_modules/npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-packlist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz", - "integrity": "sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==", - "dev": true, - "dependencies": { - "glob": "^7.1.6", - "ignore-walk": "^4.0.1", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", - "dev": true, - "dependencies": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" - } - }, - "node_modules/npm-registry-fetch": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz", - "integrity": "sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA==", - "dev": true, - "dependencies": { - "make-fetch-happen": "^10.0.1", - "minipass": "^3.1.6", - "minipass-fetch": "^1.4.1", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^8.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/npm-registry-fetch/node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm-registry-fetch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm-registry-fetch/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/npm-registry-fetch/node_modules/lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/make-fetch-happen/node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dev": true, - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm-registry-fetch/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-registry-fetch/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-registry-fetch/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm-registry-fetch/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dev": true, - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "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.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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, - "license": "MIT", - "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": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "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/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-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/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/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/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/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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-retry/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/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/pacote": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-12.0.3.tgz", - "integrity": "sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow==", - "dev": true, - "dependencies": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^2.0.0", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^3.0.0", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^12.0.0", - "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/pacote/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "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/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "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/parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "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-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "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/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "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/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.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "license": "MIT" - }, - "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.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "dev": true, - "dependencies": { - "eventemitter-asyncresource": "^1.0.0", - "hdr-histogram-js": "^2.0.1", - "hdr-histogram-percentiles-obj": "^3.0.0" - }, - "optionalDependencies": { - "nice-napi": "^1.0.2" - } - }, - "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/pkg-dir/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/pkg-dir/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/pkg-dir/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/pkg-dir/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/playwright": { - "version": "1.44.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.44.1.tgz", - "integrity": "sha512-qr/0UJ5CFAtloI3avF95Y0L1xQo6r3LQArLIg/z/PoGJ6xa+EwzrwO5lpNr/09STxdHuUoP2mvuELJS+hLdtgg==", - "dev": true, - "dependencies": { - "playwright-core": "1.44.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=16" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.44.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.44.1.tgz", - "integrity": "sha512-wh0JWtYTrhv1+OSsLPgFzGzt67Y7BE/ZS3jEqgGBlp2ppp1ZDj8c+9IARNW4dwf1poq5MgHreEM2KV/GuR4cFA==", - "dev": true, - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dev": true, - "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - }, - "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.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-color-hex-alpha": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-custom-media": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/postcss-custom-properties": { - "version": "12.1.9", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.9.tgz", - "integrity": "sha512-/E7PRvK8DAVljBbeWrcEQJPG72jaImxF3vvCNFwv9cC8CzigVoNIpeyfnJzphnN3Fd8/auBf5wvkw6W9MfmTyg==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-custom-selectors": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" - } - }, - "node_modules/postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-env-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-focus-visible": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-focus-within": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-font-variant": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", - "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-import": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", - "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-initial": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", - "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "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-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-media-minmax": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "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-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", - "dev": true, - "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-page-break": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true, - "peerDependencies": { - "postcss": "^8" - } - }, - "node_modules/postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-preset-env": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.2.3.tgz", - "integrity": "sha512-Ok0DhLfwrcNGrBn8sNdy1uZqWRk/9FId0GiQ39W4ILop5GHtjJs8bu1MY9isPwHInpVEPWjb4CEcEaSbBLpfwA==", - "dev": true, - "dependencies": { - "autoprefixer": "^10.4.2", - "browserslist": "^4.19.1", - "caniuse-lite": "^1.0.30001299", - "css-blank-pseudo": "^3.0.2", - "css-has-pseudo": "^3.0.3", - "css-prefers-color-scheme": "^6.0.2", - "cssdb": "^5.0.0", - "postcss-attribute-case-insensitive": "^5.0.0", - "postcss-color-functional-notation": "^4.2.1", - "postcss-color-hex-alpha": "^8.0.2", - "postcss-color-rebeccapurple": "^7.0.2", - "postcss-custom-media": "^8.0.0", - "postcss-custom-properties": "^12.1.2", - "postcss-custom-selectors": "^6.0.0", - "postcss-dir-pseudo-class": "^6.0.3", - "postcss-double-position-gradients": "^3.0.4", - "postcss-env-function": "^4.0.4", - "postcss-focus-visible": "^6.0.3", - "postcss-focus-within": "^5.0.3", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.2", - "postcss-image-set-function": "^4.0.4", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.0.3", - "postcss-logical": "^5.0.3", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.2", - "postcss-overflow-shorthand": "^3.0.2", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.3", - "postcss-pseudo-class-any-link": "^7.0.2", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^5.0.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-replace-overflow-wrap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true, - "peerDependencies": { - "postcss": "^8.0.3" - } - }, - "node_modules/postcss-selector-not": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", - "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "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-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/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "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/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "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.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-cache/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", - "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "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/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "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==", - "dev": true - }, - "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/regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "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/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "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.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "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": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/resolve-url-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/resolve-url-loader/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "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-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "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==" - }, - "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.49.9", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", - "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", - "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": "12.4.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.4.0.tgz", - "integrity": "sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==", - "dev": true, - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 12.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 || ^7.0.0", - "sass": "^1.3.0", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "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.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "dependencies": { - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "dev": true, - "license": "MIT", - "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, - "license": "MIT", - "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, - "license": "MIT" - }, - "node_modules/send/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, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/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, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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, - "license": "MIT" - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "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/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.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "license": "ISC" - }, - "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": "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/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/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "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/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/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "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/socks": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", - "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/socks-proxy-agent/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/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", - "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/source-map-loader/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.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/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.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/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/spdy-transport/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/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "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/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "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/stylus": { - "version": "0.56.0", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.56.0.tgz", - "integrity": "sha512-Ev3fOb4bUElwWu4F9P9WjnnaSpc8XB9OFHSFZSKMFL1CE1oM+oFXWEgAqPmmZIyhBihuqIQlFsVTypiiS9RxeA==", - "dev": true, - "dependencies": { - "css": "^3.0.0", - "debug": "^4.3.2", - "glob": "^7.1.6", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "source-map": "^0.7.3" - }, - "bin": { - "stylus": "bin/stylus" - }, - "engines": { - "node": "*" - } - }, - "node_modules/stylus-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.2.0.tgz", - "integrity": "sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.7", - "klona": "^2.0.4", - "normalize-path": "^3.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "stylus": ">=0.52.4", - "webpack": "^5.0.0" - } - }, - "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/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar-stream": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz", - "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==", - "dev": true, - "dependencies": { - "bl": "^4.0.1", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "node_modules/tar-stream/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/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "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.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "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.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "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-webpack-plugin/node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "node_modules/type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "node_modules/typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "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": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "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/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", - "dev": true, - "dependencies": { - "builtins": "^1.0.3" - } - }, - "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/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "dev": true, - "license": "MIT", - "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": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.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-dev-middleware": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz", - "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==", - "dev": true, - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.2.2", - "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/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/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.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz", - "integrity": "sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/serve-index": "^1.9.1", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", - "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^3.5.2", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "portfinder": "^1.0.28", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", - "webpack-dev-middleware": "^5.3.0", - "ws": "^8.1.0" - }, - "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/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/webpack-dev-server/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/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/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "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-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "dependencies": { - "typed-assert": "^1.0.8" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", - "webpack": "^5.12.0" - }, - "peerDependenciesMeta": { - "html-webpack-plugin": { - "optional": true - } - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "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/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/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true, - "license": "MIT", - "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/xliff-simple-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/xliff-simple-merge/-/xliff-simple-merge-1.0.0.tgz", - "integrity": "sha512-fhLUiPy2RRaec53LXC+bdvzS5cyln7EavpKaqRXMuKpelfvIh7/RlgVxQ7yt8h+N/Ya0eFPGZaUPKDdYYiVVlA==", - "dev": true, - "dependencies": { - "commander": "~8.3.0", - "js-levenshtein": "~1.1.6", - "xmldoc": "~1.1.2" - }, - "bin": { - "xliff-simple-merge": "dist/src/index.js" - } - }, - "node_modules/xliff-simple-merge/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/xml_normalize": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/xml_normalize/-/xml_normalize-0.8.4.tgz", - "integrity": "sha512-I+PiD+W/fS7YOWb4THhQfvkzd1mCuTT3KoRt4PTxiWYbH1RY74w5ewcIas8ja9APC8Ho2izg8VcNnTTN35qM9A==", - "dev": true, - "dependencies": { - "commander": "~7.1.0", - "xmldoc": "~1.1.2" - }, - "bin": { - "xml_normalize": "dist/src/index.js" - } - }, - "node_modules/xml_normalize/node_modules/commander": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", - "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/xmldoc": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.4.tgz", - "integrity": "sha512-rQshsBGR5s7pUNENTEncpI2LTCuzicri0DyE4SCV5XmS0q81JS8j1iPijP0Q5c4WLGbKh3W92hlOwY6N9ssW1w==", - "dev": true, - "dependencies": { - "sax": "^1.2.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "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/zip-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", - "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", - "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^2.1.1", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/zip-stream/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/zone.js": { - "version": "0.11.5", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.5.tgz", - "integrity": "sha512-D1/7VxEuQ7xk6z/kAROe4SUbd9CzxY4zOwVGnGHerd/SgLIVU5f4esDzQUsOCeArn933BZfWMKydH7l7dPEp0g==", - "dependencies": { - "tslib": "^2.3.0" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@angular-devkit/architect": { - "version": "0.1303.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.9.tgz", - "integrity": "sha512-RMHqCGDxbLqT+250A0a8vagsoTdqGjAxjhrvTeq7PJmClI7uJ/uA1Fs18+t85toIqVKn2hovdY9sNf42nBDD2Q==", - "dev": true, - "requires": { - "@angular-devkit/core": "13.3.9", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/build-angular": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.9.tgz", - "integrity": "sha512-1LqcMizeabx3yOkx3tptCSAoEhG6nO6hPgI/B3EJ07G/ZcoxunMWSeN3P3zT10dZMEHhcxl+8cSStSXaXj9hfA==", - "dev": true, - "requires": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1303.9", - "@angular-devkit/build-webpack": "0.1303.9", - "@angular-devkit/core": "13.3.9", - "@babel/core": "7.16.12", - "@babel/generator": "7.16.8", - "@babel/helper-annotate-as-pure": "7.16.7", - "@babel/plugin-proposal-async-generator-functions": "7.16.8", - "@babel/plugin-transform-async-to-generator": "7.16.8", - "@babel/plugin-transform-runtime": "7.16.10", - "@babel/preset-env": "7.16.11", - "@babel/runtime": "7.16.7", - "@babel/template": "7.16.7", - "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.3.9", - "ansi-colors": "4.1.1", - "babel-loader": "8.2.5", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "^4.9.1", - "cacache": "15.3.0", - "circular-dependency-plugin": "5.2.2", - "copy-webpack-plugin": "10.2.1", - "core-js": "3.20.3", - "critters": "0.0.16", - "css-loader": "6.5.1", - "esbuild": "0.14.22", - "esbuild-wasm": "0.14.22", - "glob": "7.2.0", - "https-proxy-agent": "5.0.0", - "inquirer": "8.2.0", - "jsonc-parser": "3.0.0", - "karma-source-map-support": "1.4.0", - "less": "4.1.2", - "less-loader": "10.2.0", - "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", - "mini-css-extract-plugin": "2.5.3", - "minimatch": "3.0.5", - "open": "8.4.0", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "6.0.1", - "piscina": "3.2.0", - "postcss": "8.4.31", - "postcss-import": "14.0.2", - "postcss-loader": "6.2.1", - "postcss-preset-env": "7.2.3", - "regenerator-runtime": "0.13.9", - "resolve-url-loader": "5.0.0", - "rxjs": "6.6.7", - "sass": "1.49.9", - "sass-loader": "12.4.0", - "semver": "7.5.2", - "source-map-loader": "3.0.1", - "source-map-support": "0.5.21", - "stylus": "0.56.0", - "stylus-loader": "6.2.0", - "terser": "5.14.2", - "text-table": "0.2.0", - "tree-kill": "1.2.2", - "tslib": "2.3.1", - "webpack": "5.94.0", - "webpack-dev-middleware": "5.3.0", - "webpack-dev-server": "4.7.3", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "5.1.0" - }, - "dependencies": { - "@babel/core": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", - "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.12", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.10", - "@babel/types": "^7.16.8", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "7.5.2", - "source-map": "^0.5.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true - } - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1303.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.9.tgz", - "integrity": "sha512-CdYXvAN1xAik8FyfdF1B8Nt1B/1aBvkZr65AUVFOmP6wuVzcdn78BMZmZD42srYbV2449sWi5Vyo/j0a/lfJww==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1303.9", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.9.tgz", - "integrity": "sha512-XqCuIWyoqIsLABjV3GQL/+EiBCt3xVPPtNp3Mg4gjBsDLW7PEnvbb81yGkiZQmIsq4EIyQC/6fQa3VdjsCshGg==", - "dev": true, - "requires": { - "ajv": "8.9.0", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "dependencies": { - "ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", - "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 - } - } - }, - "@angular-devkit/schematics": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.9.tgz", - "integrity": "sha512-oNHLNtwbtEJ0dYPPXy1NpfRdSiFsYBl7+ozJklLgNV/AEOxlSi2qlVx6DoxNVjz5XgQ7Z+eoVDMw7ewGPnGSyA==", - "dev": true, - "requires": { - "@angular-devkit/core": "13.3.9", - "jsonc-parser": "3.0.0", - "magic-string": "0.25.7", - "ora": "5.4.1", - "rxjs": "6.6.7" - } - }, - "@angular/animations": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.11.tgz", - "integrity": "sha512-KE/3RuvixHIk9YTSwaUsezsUm9Ig9Y8rZMpHOT/8bRtzPiJ5ld2GnDHjrJgyZn7TdoP4wz4YCta5eC4ycu+KCw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/cli": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.9.tgz", - "integrity": "sha512-b64mfB7A8vw5QmopEnkCVhGH8zDX5FrQVKKCRlK1dO3GEtAdfhFJb5J7TBbCOwp1XfYJ5jl+biNQy4HoX5HQPw==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1303.9", - "@angular-devkit/core": "13.3.9", - "@angular-devkit/schematics": "13.3.9", - "@schematics/angular": "13.3.9", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.3", - "ini": "2.0.0", - "inquirer": "8.2.0", - "jsonc-parser": "3.0.0", - "npm-package-arg": "8.1.5", - "npm-pick-manifest": "6.1.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "12.0.3", - "resolve": "1.22.0", - "semver": "7.5.2", - "symbol-observable": "4.0.0", - "uuid": "8.3.2" - } - }, - "@angular/common": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.11.tgz", - "integrity": "sha512-gPMwDYIAag1izXm2tRQ6EOIx9FVEUqLdr+qYtRVoQtoBmfkoTSLGcpeBXqqlPVxVPbA6Li1WZZT5wxLLlLAN+Q==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.11.tgz", - "integrity": "sha512-EV6JCBbXdHDHbPShWmymvuoxFYG0KVc8sDJpYp47WLHCY2zgZaXhvWs//Hrls3fmi+TGTekgRa2jOBBNce/Ggg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler-cli": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.11.tgz", - "integrity": "sha512-cl+3Wzxt8NRi2WY+RdsxuQ3yQRUp8pSlfSlJJnfaKE1BEqap6uem2DovuhnIbmrLhxZ5xt7o+I1szyO6sn6+ag==", - "requires": { - "@babel/core": "^7.17.2", - "chokidar": "^3.0.0", - "convert-source-map": "^1.5.1", - "dependency-graph": "^0.11.0", - "magic-string": "^0.26.0", - "reflect-metadata": "^0.1.2", - "semver": "7.5.2", - "sourcemap-codec": "^1.4.8", - "tslib": "^2.3.0", - "yargs": "^17.2.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.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==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.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==", - "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==" - }, - "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==" - }, - "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==" - }, - "magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "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==", - "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==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "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==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yargs": { - "version": "17.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==" - } - } - }, - "@angular/core": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.11.tgz", - "integrity": "sha512-9BmE2CxyV0g+AkBeuc8IwjSOiJ8Y+kptXnqD/J8EAFT3B0/fLGVnjFdZC6Sev9L0SNZb6qdzebpfIOLqbUjReQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/forms": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.11.tgz", - "integrity": "sha512-iMgTNB+Qc3TsfAZSk1FnUE6MVoddPzxhG9AKCfSlvpjFh8VmXkIjxPL3dun7J8OjayT3X+B8f7LZ9AkKNXtBKw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/language-service": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.3.11.tgz", - "integrity": "sha512-EDw8L0RKrRYUYWB2P0xS1WRazYvv5gOguX+IwPZlCpR95QLQPTTpmNaqvnYjmFlvQjGHJYc8wqtJJIIMiL6FSA==", - "dev": true - }, - "@angular/localize": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-13.3.11.tgz", - "integrity": "sha512-plMAkj07mcYYsidv7R4NFRYdxQEJJMK7IGp7BeaEwtrBbplqQORIMy2HOUDet/gWg/D1b/KFTjTAhlmNdczYtg==", - "requires": { - "@babel/core": "7.17.2", - "glob": "7.2.0", - "yargs": "^17.2.1" - }, - "dependencies": { - "@babel/core": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.2.tgz", - "integrity": "sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw==", - "requires": { - "@ampproject/remapping": "^2.0.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.2", - "@babel/parser": "^7.17.0", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "7.5.2" - } - }, - "@babel/generator": { - "version": "7.19.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", - "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", - "requires": { - "@babel/types": "^7.19.4", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.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==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.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==", - "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==" - }, - "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==" - }, - "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==" - }, - "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==", - "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==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "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==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yargs": { - "version": "17.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==" - } - } - }, - "@angular/platform-browser": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.11.tgz", - "integrity": "sha512-PG3chCErARb6wNzkOed2NsZmgvTmbumRx/6sMXqGkDKXYQm0JULnl4X42Rn+JCgJ9DLJi5/jrd1dbcBCrKk9Vg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.11.tgz", - "integrity": "sha512-xM0VRC1Nw//SHO3gkghUHyjCaaQbk1UYMq4vIu3iKVq9KLqOSZgccv0NcOKHzXXN3S5RgX2auuyOUOCD6ny1Pg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/router": { - "version": "13.3.11", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.11.tgz", - "integrity": "sha512-bJTcxDYKEyoqtsi1kJcDJWLmEN+dXpwhU07SsqUwfyN4V5fYF1ApDhpJ4c17hNdjEqe106srT9tiHXhmWayhmQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - } - }, - "@babel/compat-data": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", - "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" - }, - "@babel/core": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", - "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.9", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "7.5.2" - }, - "dependencies": { - "@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "@babel/generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", - "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.8", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true - } - } - }, - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", - "requires": { - "@babel/compat-data": "^7.19.3", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "7.5.2" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - } - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - } - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "7.5.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - } - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", - "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - } - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - } - } - }, - "@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", - "requires": { - "@babel/types": "^7.19.4" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==" - }, - "@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==" - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - }, - "@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - } - } - }, - "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - } - }, - "@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", - "requires": { - "@babel/types": "^7.26.3" - } - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "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.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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-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-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-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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", - "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - } - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", - "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz", - "integrity": "sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "7.5.2" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@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-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.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@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.16.8", - "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.20.2", - "semver": "7.5.2" - } - }, - "@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.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", - "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==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", - "requires": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", - "requires": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - } - }, - "@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", - "requires": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" - }, - "jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==" - } - } - }, - "@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", - "requires": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - } - }, - "@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/selector-specificity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", - "dev": true, - "requires": {} - }, - "@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", - "dev": true - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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 - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.0.tgz", - "integrity": "sha512-YH+BnkvuCiPR+MUOY6JIArdTIGrRtsxnLaIxPRy4CpGJ/V6OO6Gq/1J+FJEc4j5e5h6Bcy3/K7prlMrm93BJoA==", - "requires": { - "@jridgewell/set-array": "1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" - }, - "@jridgewell/set-array": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.0.0.tgz", - "integrity": "sha512-LcqVnHCjOAj8BTCtjpwYZCMTn4yArusbdObCVRUYvBHhrR5fVLVyENG+UVWM4T4H/ufv7NiBLdprllxWs/5PaQ==" - }, - "@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@ng-bootstrap/ng-bootstrap": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-12.1.2.tgz", - "integrity": "sha512-p27c+mYVdHiJMYrj5hwClVJxLdiZxafAqlbw1sdJh2xJ1rGOe+H/kCf5YDRbhlHqRN+34Gr0RQqIUeD1I2V8hg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@ngtools/webpack": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.9.tgz", - "integrity": "sha512-wmgOI5sogAuilwBZJqCHVMjm2uhDxjdSmNLFx7eznwGDa6LjvjuATqCv2dVlftq0Y/5oZFVrg5NpyHt5kfZ8Cg==", - "dev": true, - "requires": {} - }, - "@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" - } - }, - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "7.5.2" - } - }, - "@npmcli/git": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", - "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "7.5.2", - "which": "^2.0.2" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", - "dev": true - }, - "@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-2.0.0.tgz", - "integrity": "sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^8.2.0", - "read-package-json-fast": "^2.0.1" - } - }, - "@playwright/test": { - "version": "1.44.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.44.1.tgz", - "integrity": "sha512-1hZ4TNvD5z9VuhNJ/walIjvMVvYkZKf71axoF/uiAqpntQJXpG64dlXhoDXE3OczPuTuvjf/M5KWFg5VAVUS3Q==", - "dev": true, - "requires": { - "playwright": "1.44.1" - } - }, - "@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", - "peer": true - }, - "@schematics/angular": { - "version": "13.3.9", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.9.tgz", - "integrity": "sha512-tm5wst7+Z8cOgOJ/4JVlYKOFCCOVnqKYFtYf0BIWq6RFBXcw6QqbGW1wXH8ASmuev4QZXKgqc7YKALPpYAKCeQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "13.3.9", - "@angular-devkit/schematics": "13.3.9", - "jsonc-parser": "3.0.0" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "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/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true - }, - "@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "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.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/file-saver": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.1.tgz", - "integrity": "sha512-g1QUuhYVVAamfCifK7oB7G3aIl4BbOyzDOqVyUfEr4tfBKrXfeH+M+Tg7HKCXSrbzxYdhyCP7z9WbKo0R2hBCw==", - "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.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "@types/mime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", - "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", - "dev": true - }, - "@types/node": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.0.tgz", - "integrity": "sha512-uM4mnmsIIPK/yeO+42F2RQhGUIs39K2RFmugcJANppXe6J1nvH87PvzPZYpza7Xhhs8Yn9yIAVdLZ84z61+0xQ==", - "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.15.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", - "dev": true, - "requires": { - "@types/mime": "*", - "@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": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.14.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 - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "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.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true - }, - "acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "requires": {} - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - } - }, - "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": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "archiver": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", - "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "async": "^2.6.3", - "buffer-crc32": "^0.2.1", - "glob": "^7.1.4", - "readable-stream": "^3.4.0", - "tar-stream": "^2.1.0", - "zip-stream": "^2.1.2" - }, - "dependencies": { - "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" - } - } - } - }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - } - }, - "are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "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" - } - } - } - }, - "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 - }, - "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" - } - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.12", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.12.tgz", - "integrity": "sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q==", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001407", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.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.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "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-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "7.5.2" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", - "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "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.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "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.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" - }, - "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" - }, - "dependencies": { - "buffer": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", - "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "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" - } - } - } - }, - "body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "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.13.0", - "raw-body": "2.5.2", - "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" - } - }, - "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 - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "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.2.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.2.tgz", - "integrity": "sha512-dEtzMTV71n6Fhmbg4fYJzQsw1N29hJKO1js5ackCgIpDcGid2ETMGC6zwSYw09v05Y+oRdQ9loC54zB1La3hHQ==", - "requires": {} - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "requires": { - "fill-range": "^7.1.1" - } - }, - "browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", - "requires": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "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 - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "requires": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - } - }, - "call-bind-apply-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.0.tgz", - "integrity": "sha512-CCKAP2tkPau7D3GE8+V8R6sQubA9R5foIzGp+85EXCVSCivuxBNAWqcpn72PKYiIcqoViv/kcUDpaEIMBVi1lQ==", - "dev": true, - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001687", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", - "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==" - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "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==", - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "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 - }, - "circular-dependency-plugin": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", - "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "requires": {} - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "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-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 - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "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-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "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 - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "compress-commons": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", - "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^3.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^2.3.6" - } - }, - "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": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "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 - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "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.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "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-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "requires": { - "is-what": "^3.14.1" - } - }, - "copy-webpack-plugin": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.1.tgz", - "integrity": "sha512-nr81NhCAIpAWXGCK5thrKmfCQ6GDY0L5RN0U+BnIn/7Us55+UCex5ANNsNKmIVtDRnk0Ecf+/kzp9SUVrrBMLg==", - "dev": true, - "requires": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^12.0.2", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.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" - } - } - } - }, - "core-js": { - "version": "3.20.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz", - "integrity": "sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==", - "dev": true - }, - "core-js-compat": { - "version": "3.25.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.5.tgz", - "integrity": "sha512-ovcyhs2DEBUIE0MGEKHP4olCUW/XYte3Vroyxuh38rD1wAO4dHohsovUC4eAOuzFxE6b+RXvBU3UZ9o0YhUTkA==", - "dev": true, - "requires": { - "browserslist": "^4.21.4" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "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" - } - }, - "crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", - "dev": true, - "requires": { - "buffer": "^5.1.0" - }, - "dependencies": { - "buffer": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", - "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - } - } - }, - "crc32-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", - "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", - "dev": true, - "requires": { - "crc": "^3.4.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "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" - } - } - } - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "css-select": "^4.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "postcss": "8.4.31", - "pretty-bytes": "^5.3.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" - } - } - } - }, - "cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "css-loader": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", - "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "8.4.31", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "semver": "7.5.2" - } - }, - "css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "requires": {} - }, - "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-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 - }, - "cssdb": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-5.1.0.tgz", - "integrity": "sha512-/vqjXhv1x9eGkE/zO6o8ZOI7dgdZbLVLUGyVRbPgk6YipXbW87YzUCcO+Jrmi5bwJlAH6oD+MNeZyRgXea1GZw==", - "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 - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "requires": { - "ms": "2.1.2" - } - }, - "decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "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" - } - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "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.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "dependencies": { - "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" - } - } - } - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==" - }, - "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": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "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" - } - }, - "dunder-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", - "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", - "dev": true, - "requires": { - "call-bind-apply-helpers": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - } - }, - "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.5.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", - "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==" - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "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.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "requires": { - "prr": "~1.0.1" - } - }, - "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" - } - }, - "es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true - }, - "es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true - }, - "esbuild": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz", - "integrity": "sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==", - "dev": true, - "optional": true, - "requires": { - "esbuild-android-arm64": "0.14.22", - "esbuild-darwin-64": "0.14.22", - "esbuild-darwin-arm64": "0.14.22", - "esbuild-freebsd-64": "0.14.22", - "esbuild-freebsd-arm64": "0.14.22", - "esbuild-linux-32": "0.14.22", - "esbuild-linux-64": "0.14.22", - "esbuild-linux-arm": "0.14.22", - "esbuild-linux-arm64": "0.14.22", - "esbuild-linux-mips64le": "0.14.22", - "esbuild-linux-ppc64le": "0.14.22", - "esbuild-linux-riscv64": "0.14.22", - "esbuild-linux-s390x": "0.14.22", - "esbuild-netbsd-64": "0.14.22", - "esbuild-openbsd-64": "0.14.22", - "esbuild-sunos-64": "0.14.22", - "esbuild-windows-32": "0.14.22", - "esbuild-windows-64": "0.14.22", - "esbuild-windows-arm64": "0.14.22" - } - }, - "esbuild-android-arm64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz", - "integrity": "sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz", - "integrity": "sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz", - "integrity": "sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz", - "integrity": "sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz", - "integrity": "sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz", - "integrity": "sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz", - "integrity": "sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz", - "integrity": "sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz", - "integrity": "sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz", - "integrity": "sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz", - "integrity": "sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz", - "integrity": "sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz", - "integrity": "sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz", - "integrity": "sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz", - "integrity": "sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz", - "integrity": "sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==", - "dev": true, - "optional": true - }, - "esbuild-wasm": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.22.tgz", - "integrity": "sha512-FOSAM29GN1fWusw0oLMv6JYhoheDIh5+atC72TkJKfIUMID6yISlicoQSd9gsNSFsNBvABvtE2jR4JB1j4FkFw==", - "dev": true - }, - "esbuild-windows-32": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz", - "integrity": "sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz", - "integrity": "sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.14.22", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz", - "integrity": "sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==", - "dev": true, - "optional": true - }, - "escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" - }, - "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "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" - } - }, - "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 - }, - "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 - }, - "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 - }, - "eventemitter-asyncresource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "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": "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" - } - }, - "express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "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" - } - }, - "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 - }, - "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 - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "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.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "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 - }, - "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": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-saver": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", - "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "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" - } - }, - "follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "dev": true - }, - "fork-awesome": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fork-awesome/-/fork-awesome-1.2.0.tgz", - "integrity": "sha512-MNwTBnnudMIweHfDtTY8TeR5fxIAZ2w9o8ITn5XDySqdxa4k5AH8IuAMa89RVxDxgPNlosZxqkFKN5UmHXuYSw==" - }, - "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-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.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": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "dependencies": { - "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 - }, - "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 - }, - "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 - }, - "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" - } - } - } - }, - "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==" - }, - "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==" - }, - "get-intrinsic": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz", - "integrity": "sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==", - "dev": true, - "requires": { - "call-bind-apply-helpers": "^1.0.0", - "dunder-proto": "^1.0.0", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "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 - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "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==" - }, - "globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "dev": true, - "requires": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "dependencies": { - "array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - } - } - }, - "gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "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-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "requires": { - "function-bind": "^1.1.2" - } - }, - "hdr-histogram-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, - "requires": { - "@assemblyscript/loader": "^0.10.1", - "base64-js": "^1.2.0", - "pako": "^1.0.3" - } - }, - "hdr-histogram-percentiles-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "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" - } - }, - "html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "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" - }, - "dependencies": { - "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 - } - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "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-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "http-proxy-middleware": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", - "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", - "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" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "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 - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "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.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "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 - }, - "ignore-walk": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", - "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "optional": 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" - }, - "dependencies": { - "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 - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "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==" - }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true - }, - "inquirer": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", - "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.2.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "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": "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 - }, - "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 - }, - "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 - }, - "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 - }, - "rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "ip": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", - "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", - "dev": true - }, - "ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dev": true, - "requires": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "dependencies": { - "sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "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-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "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==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "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": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "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==", - "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-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "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==" - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "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-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "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 - }, - "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-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "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": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "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": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "7.5.2" - } - }, - "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" - } - } - } - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "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==" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "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 - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "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 - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "less": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", - "integrity": "sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==", - "dev": true, - "requires": { - "copy-anything": "^2.0.1", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^2.5.2", - "parse-node-version": "^1.0.1", - "source-map": "~0.6.0", - "tslib": "^2.3.0" - }, - "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "7.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "less-loader": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.2.0.tgz", - "integrity": "sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==", - "dev": true, - "requires": { - "klona": "^2.0.4" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "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": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true - }, - "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.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", - "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" - } - } - } - }, - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "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": "7.5.2" - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - } - }, - "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.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", - "dev": true, - "requires": { - "fs-monkey": "^1.0.3" - } - }, - "merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true - }, - "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.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "requires": { - "braces": "^3.0.3", - "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==", - "dev": true - }, - "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==", - "dev": true, - "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.5.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz", - "integrity": "sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw==", - "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.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", - "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.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "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" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "dev": true - }, - "needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "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 - }, - "ng-extract-i18n-merge": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.3.0.tgz", - "integrity": "sha512-L1bsvaLiXZy7hXqizWf38Fqh/vIvPw7tKlg3a4ixE39AHwpwyYjTTN8Szp50pGYTHZiNe72n+TNblNVQAsYSTQ==", - "dev": true, - "requires": { - "@angular-devkit/architect": "^0.1301.0", - "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0", - "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0", - "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0", - "xliff-simple-merge": "~1.0.0", - "xml_normalize": "~0.8.4", - "xmldoc": "~1.1.2" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1301.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1301.4.tgz", - "integrity": "sha512-p6G8CEMnE+gYwxRyEttj3QGsuNJ3Kusi7iwBIzWyf2RpJSdGzXdwUEiRGg6iS0YHFr06/ZFfAWfnM2DQvNm4TA==", - "dev": true, - "requires": { - "@angular-devkit/core": "13.1.4", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.1.4.tgz", - "integrity": "sha512-225Gjy4iVxh5Jo9njJnaG75M/Dt95UW+dEPCGWKV5E/++7UUlXlo9sNWq8x2vJm2nhtsPkpnXNOt4pW1mIDwqQ==", - "dev": true, - "requires": { - "ajv": "8.8.2", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "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 - } - } - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "optional": true - }, - "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-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "7.5.2", - "tar": "^6.1.2", - "which": "^2.0.2" - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "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 - }, - "npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", - "dev": true, - "requires": { - "semver": "7.5.2" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "semver": "7.5.2", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-packlist": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-3.0.0.tgz", - "integrity": "sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==", - "dev": true, - "requires": { - "glob": "^7.1.6", - "ignore-walk": "^4.0.1", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", - "dev": true, - "requires": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "7.5.2" - } - }, - "npm-registry-fetch": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz", - "integrity": "sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA==", - "dev": true, - "requires": { - "make-fetch-happen": "^10.0.1", - "minipass": "^3.1.6", - "minipass-fetch": "^1.4.1", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^8.1.5" - }, - "dependencies": { - "@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "7.5.2" - } - }, - "@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true - }, - "make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "dependencies": { - "minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - } - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dev": true, - "requires": { - "unique-slug": "^3.0.0" - } - }, - "unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - } - } - }, - "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" - } - }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^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-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "dev": true - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "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.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "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": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "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" - } - }, - "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-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": "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 - }, - "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" - } - }, - "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" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "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-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.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" - }, - "dependencies": { - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - } - } - }, - "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 - }, - "pacote": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-12.0.3.tgz", - "integrity": "sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow==", - "dev": true, - "requires": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^2.0.0", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^3.0.0", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^12.0.0", - "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "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" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "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" - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "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 - }, - "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.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "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.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "dev": true, - "requires": { - "eventemitter-asyncresource": "^1.0.0", - "hdr-histogram-js": "^2.0.1", - "hdr-histogram-percentiles-obj": "^3.0.0", - "nice-napi": "^1.0.2" - } - }, - "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" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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 - } - } - }, - "playwright": { - "version": "1.44.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.44.1.tgz", - "integrity": "sha512-qr/0UJ5CFAtloI3avF95Y0L1xQo6r3LQArLIg/z/PoGJ6xa+EwzrwO5lpNr/09STxdHuUoP2mvuELJS+hLdtgg==", - "dev": true, - "requires": { - "fsevents": "2.3.2", - "playwright-core": "1.44.1" - } - }, - "playwright-core": { - "version": "1.44.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.44.1.tgz", - "integrity": "sha512-wh0JWtYTrhv1+OSsLPgFzGzt67Y7BE/ZS3jEqgGBlp2ppp1ZDj8c+9IARNW4dwf1poq5MgHreEM2KV/GuR4cFA==", - "dev": true - }, - "portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dev": true, - "requires": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - }, - "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.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-color-hex-alpha": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", - "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-custom-media": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", - "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-custom-properties": { - "version": "12.1.9", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.9.tgz", - "integrity": "sha512-/E7PRvK8DAVljBbeWrcEQJPG72jaImxF3vvCNFwv9cC8CzigVoNIpeyfnJzphnN3Fd8/auBf5wvkw6W9MfmTyg==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-custom-selectors": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-env-function": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", - "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-focus-visible": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", - "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "postcss-focus-within": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", - "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "postcss-font-variant": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true, - "requires": {} - }, - "postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", - "dev": true, - "requires": {} - }, - "postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-import": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", - "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-initial": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", - "dev": true, - "requires": {} - }, - "postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "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.5.2" - } - }, - "postcss-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", - "dev": true, - "requires": {} - }, - "postcss-media-minmax": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true, - "requires": {} - }, - "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-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", - "dev": true, - "requires": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-page-break": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", - "dev": true, - "requires": {} - }, - "postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-preset-env": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.2.3.tgz", - "integrity": "sha512-Ok0DhLfwrcNGrBn8sNdy1uZqWRk/9FId0GiQ39W4ILop5GHtjJs8bu1MY9isPwHInpVEPWjb4CEcEaSbBLpfwA==", - "dev": true, - "requires": { - "autoprefixer": "^10.4.2", - "browserslist": "^4.19.1", - "caniuse-lite": "^1.0.30001299", - "css-blank-pseudo": "^3.0.2", - "css-has-pseudo": "^3.0.3", - "css-prefers-color-scheme": "^6.0.2", - "cssdb": "^5.0.0", - "postcss-attribute-case-insensitive": "^5.0.0", - "postcss-color-functional-notation": "^4.2.1", - "postcss-color-hex-alpha": "^8.0.2", - "postcss-color-rebeccapurple": "^7.0.2", - "postcss-custom-media": "^8.0.0", - "postcss-custom-properties": "^12.1.2", - "postcss-custom-selectors": "^6.0.0", - "postcss-dir-pseudo-class": "^6.0.3", - "postcss-double-position-gradients": "^3.0.4", - "postcss-env-function": "^4.0.4", - "postcss-focus-visible": "^6.0.3", - "postcss-focus-within": "^5.0.3", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.2", - "postcss-image-set-function": "^4.0.4", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.0.3", - "postcss-logical": "^5.0.3", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.2", - "postcss-overflow-shorthand": "^3.0.2", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.3", - "postcss-pseudo-class-any-link": "^7.0.2", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^5.0.0" - } - }, - "postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-replace-overflow-wrap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", - "dev": true, - "requires": {} - }, - "postcss-selector-not": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz", - "integrity": "sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==", - "dev": true, - "requires": { - "balanced-match": "^1.0.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-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 - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true - }, - "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 - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.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 - } - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" - }, - "qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, - "requires": { - "side-channel": "^1.0.6" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "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-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, - "requires": { - "pify": "^2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "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" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "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==", - "dev": true - }, - "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" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, - "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "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 - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "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.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "requires": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "8.4.31", - "source-map": "0.6.1" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "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.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "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-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "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" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "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==" - }, - "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.49.9", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", - "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", - "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": "12.4.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.4.0.tgz", - "integrity": "sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==", - "dev": true, - "requires": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "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.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "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 - } - } - }, - "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 - }, - "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 - }, - "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.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "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" - } - }, - "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.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "requires": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "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": "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 - }, - "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - } - }, - "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 - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "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" - } - }, - "socks": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", - "dev": true, - "requires": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", - "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "dependencies": { - "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" - } - } - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "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==", - "dev": true - }, - "source-map-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.1.tgz", - "integrity": "sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.1" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "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" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "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" - }, - "dependencies": { - "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" - } - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "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" - } - }, - "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.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" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "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 - }, - "stylus": { - "version": "0.56.0", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.56.0.tgz", - "integrity": "sha512-Ev3fOb4bUElwWu4F9P9WjnnaSpc8XB9OFHSFZSKMFL1CE1oM+oFXWEgAqPmmZIyhBihuqIQlFsVTypiiS9RxeA==", - "dev": true, - "requires": { - "css": "^3.0.0", - "debug": "^4.3.2", - "glob": "^7.1.6", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "source-map": "^0.7.3" - } - }, - "stylus-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.2.0.tgz", - "integrity": "sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==", - "dev": true, - "requires": { - "fast-glob": "^3.2.7", - "klona": "^2.0.4", - "normalize-path": "^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 - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "tar-stream": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz", - "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==", - "dev": true, - "requires": { - "bl": "^4.0.1", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "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" - } - } - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - }, - "terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "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==", - "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 - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "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" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==" - }, - "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.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", - "requires": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "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": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "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 - }, - "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, - "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 - }, - "watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "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": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", - "dev": true, - "requires": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-dev-middleware": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz", - "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==", - "dev": true, - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.2.2", - "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" - } - }, - "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 - }, - "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.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz", - "integrity": "sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q==", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/serve-index": "^1.9.1", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", - "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^3.5.2", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "portfinder": "^1.0.28", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", - "webpack-dev-middleware": "^5.3.0", - "ws": "^8.1.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" - } - }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "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 - }, - "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" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "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-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "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 - }, - "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" - } - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true, - "requires": {} - }, - "xliff-simple-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/xliff-simple-merge/-/xliff-simple-merge-1.0.0.tgz", - "integrity": "sha512-fhLUiPy2RRaec53LXC+bdvzS5cyln7EavpKaqRXMuKpelfvIh7/RlgVxQ7yt8h+N/Ya0eFPGZaUPKDdYYiVVlA==", - "dev": true, - "requires": { - "commander": "~8.3.0", - "js-levenshtein": "~1.1.6", - "xmldoc": "~1.1.2" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - } - } - }, - "xml_normalize": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/xml_normalize/-/xml_normalize-0.8.4.tgz", - "integrity": "sha512-I+PiD+W/fS7YOWb4THhQfvkzd1mCuTT3KoRt4PTxiWYbH1RY74w5ewcIas8ja9APC8Ho2izg8VcNnTTN35qM9A==", - "dev": true, - "requires": { - "commander": "~7.1.0", - "xmldoc": "~1.1.2" - }, - "dependencies": { - "commander": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", - "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", - "dev": true - } - } - }, - "xmldoc": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.4.tgz", - "integrity": "sha512-rQshsBGR5s7pUNENTEncpI2LTCuzicri0DyE4SCV5XmS0q81JS8j1iPijP0Q5c4WLGbKh3W92hlOwY6N9ssW1w==", - "dev": true, - "requires": { - "sax": "^1.2.4" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "zip-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", - "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^2.1.1", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "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" - } + "name": "zonemaster-gui", + "version": "v5.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "zonemaster-gui", + "version": "v5.0.0", + "license": "BSD-2-Clause", + "dependencies": { + "@astrojs/node": "^9.5.1", + "@astrojs/svelte": "^7.2.2", + "astro": "^5.16.4", + "punycode": "^2.3.1", + "remark-definition-list": "^2.0.0", + "remark-gfm": "^4.0.1", + "svelte": "^5.45.6" + }, + "devDependencies": { + "@playwright/test": "^1.57.0", + "@sveltejs/vite-plugin-svelte": "^6.2.1", + "@tsconfig/svelte": "^5.0.6", + "@types/node": "^24.10.1", + "archiver": "^7.0.1", + "prettier": "3.7.4", + "prettier-plugin-astro": "0.14.1", + "prettier-plugin-svelte": "^3.4.0", + "svelte-check": "^4.3.4", + "typescript": "^5.9.3", + "vite": "^7.2.7" + } + }, + "node_modules/@astrojs/compiler": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.13.0.tgz", + "integrity": "sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==", + "license": "MIT" + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", + "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", + "license": "MIT" + }, + "node_modules/@astrojs/markdown-remark": { + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.9.tgz", + "integrity": "sha512-hX2cLC/KW74Io1zIbn92kI482j9J7LleBLGCVU9EP3BeH5MVrnFawOnqD0t/q6D1Z+ZNeQG2gNKMslCcO36wng==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.7.5", + "@astrojs/prism": "3.3.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-text": "^4.0.2", + "import-meta-resolve": "^4.2.0", + "js-yaml": "^4.1.0", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "shiki": "^3.13.0", + "smol-toml": "^1.4.2", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.2", + "vfile": "^6.0.3" + } + }, + "node_modules/@astrojs/node": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-9.5.1.tgz", + "integrity": "sha512-7k+SU877OUQylPr0mFcWrGvNuC78Lp9w+GInY8Rwc+LkHyDP9xls+nZAioK0WDWd+fyeQnlHbpDGURO3ZHuDVg==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.7.5", + "send": "^1.2.0", + "server-destroy": "^1.0.1" + }, + "peerDependencies": { + "astro": "^5.14.3" + } + }, + "node_modules/@astrojs/prism": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", + "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==", + "license": "MIT", + "dependencies": { + "prismjs": "^1.30.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@astrojs/svelte": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@astrojs/svelte/-/svelte-7.2.2.tgz", + "integrity": "sha512-Eb9ahZ2BD2kPx5u7c/U6+FVNLxtuUcx0vL6kkGPP0hEikoSy0PavdjwYfZiuOtPCE7ZpQHGikGZMzrIFpjH9pQ==", + "license": "MIT", + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^5.1.1", + "svelte2tsx": "^0.7.42", + "vite": "^6.4.1" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + }, + "peerDependencies": { + "astro": "^5.0.0", + "svelte": "^5.1.16", + "typescript": "^5.3.3" + } + }, + "node_modules/@astrojs/svelte/node_modules/@sveltejs/vite-plugin-svelte": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.1.1.tgz", + "integrity": "sha512-Y1Cs7hhTc+a5E9Va/xwKlAJoariQyHY+5zBgCZg4PFWNYQ1nMN9sjK1zhw1gK69DuqVP++sht/1GZg1aRwmAXQ==", + "license": "MIT", + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", + "debug": "^4.4.1", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.17", + "vitefu": "^1.0.6" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "svelte": "^5.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@astrojs/svelte/node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz", + "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.7" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "svelte": "^5.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@astrojs/svelte/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/@astrojs/svelte/node_modules/vite": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", + "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", + "license": "MIT", + "dependencies": { + "ci-info": "^4.2.0", + "debug": "^4.4.0", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "is-docker": "^3.0.0", + "is-wsl": "^3.1.0", + "which-pm-runs": "^1.1.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@capsizecss/unpack": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-3.0.1.tgz", + "integrity": "sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==", + "license": "MIT", + "dependencies": { + "fontkit": "^2.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", + "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz", + "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz", + "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz", + "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz", + "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz", + "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz", + "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz", + "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz", + "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz", + "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz", + "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz", + "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz", + "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz", + "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz", + "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz", + "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz", + "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz", + "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz", + "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz", + "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz", + "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz", + "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz", + "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz", + "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz", + "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz", + "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz", + "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.4.tgz", + "integrity": "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.3" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.4.tgz", + "integrity": "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.3" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.3.tgz", + "integrity": "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.3.tgz", + "integrity": "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.3.tgz", + "integrity": "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.3.tgz", + "integrity": "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.3.tgz", + "integrity": "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.3.tgz", + "integrity": "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.3.tgz", + "integrity": "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.3.tgz", + "integrity": "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.3.tgz", + "integrity": "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.4.tgz", + "integrity": "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.4.tgz", + "integrity": "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.4.tgz", + "integrity": "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.4.tgz", + "integrity": "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.4.tgz", + "integrity": "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.3" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.4.tgz", + "integrity": "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.3" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.4.tgz", + "integrity": "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.3" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.4.tgz", + "integrity": "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.5.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.4.tgz", + "integrity": "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.4.tgz", + "integrity": "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.4.tgz", + "integrity": "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", + "license": "MIT" + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@playwright/test": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/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==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.0.tgz", + "integrity": "sha512-VxDYCDqOaR7NXzAtvRx7G1u54d2kEHopb28YH/pKzY6y0qmogP3gG7CSiWsq9WvDFxOQMpNEyjVAHZFXfH3o/A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.0.tgz", + "integrity": "sha512-pqDirm8koABIKvzL59YI9W9DWbRlTX7RWhN+auR8HXJxo89m4mjqbah7nJZjeKNTNYopqL+yGg+0mhCpf3xZtQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.0.tgz", + "integrity": "sha512-YCdWlY/8ltN6H78HnMsRHYlPiKvqKagBP1r+D7SSylxX+HnsgXGCmLiV3Y4nSyY9hW8qr8U9LDUx/Lo7M6MfmQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.0.tgz", + "integrity": "sha512-z4nw6y1j+OOSGzuVbSWdIp1IUks9qNw4dc7z7lWuWDKojY38VMWBlEN7F9jk5UXOkUcp97vA1N213DF+Lz8BRg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.0.tgz", + "integrity": "sha512-Q/dv9Yvyr5rKlK8WQJZVrp5g2SOYeZUs9u/t2f9cQ2E0gJjYB/BWoedXfUT0EcDJefi2zzVfhcOj8drWCzTviw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.0.tgz", + "integrity": "sha512-kdBsLs4Uile/fbjZVvCRcKB4q64R+1mUq0Yd7oU1CMm1Av336ajIFqNFovByipciuUQjBCPMxwJhCgfG2re3rg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.0.tgz", + "integrity": "sha512-aL6hRwu0k7MTUESgkg7QHY6CoqPgr6gdQXRJI1/VbFlUMwsSzPGSR7sG5d+MCbYnJmJwThc2ol3nixj1fvI/zQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.0.tgz", + "integrity": "sha512-BTs0M5s1EJejgIBJhCeiFo7GZZ2IXWkFGcyZhxX4+8usnIo5Mti57108vjXFIQmmJaRyDwmV59Tw64Ap1dkwMw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.0.tgz", + "integrity": "sha512-uj672IVOU9m08DBGvoPKPi/J8jlVgjh12C9GmjjBxCTQc3XtVmRkRKyeHSmIKQpvJ7fIm1EJieBUcnGSzDVFyw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.0.tgz", + "integrity": "sha512-/+IVbeDMDCtB/HP/wiWsSzduD10SEGzIZX2945KSgZRNi4TSkjHqRJtNTVtVb8IRwhJ65ssI56krlLik+zFWkw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.0.tgz", + "integrity": "sha512-U1vVzvSWtSMWKKrGoROPBXMh3Vwn93TA9V35PldokHGqiUbF6erSzox/5qrSMKp6SzakvyjcPiVF8yB1xKr9Pg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.0.tgz", + "integrity": "sha512-X/4WfuBAdQRH8cK3DYl8zC00XEE6aM472W+QCycpQJeLWVnHfkv7RyBFVaTqNUMsTgIX8ihMjCvFF9OUgeABzw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.0.tgz", + "integrity": "sha512-xIRYc58HfWDBZoLmWfWXg2Sq8VCa2iJ32B7mqfWnkx5mekekl0tMe7FHpY8I72RXEcUkaWawRvl3qA55og+cwQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.0.tgz", + "integrity": "sha512-mbsoUey05WJIOz8U1WzNdf+6UMYGwE3fZZnQqsM22FZ3wh1N887HT6jAOjXs6CNEK3Ntu2OBsyQDXfIjouI4dw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.0.tgz", + "integrity": "sha512-qP6aP970bucEi5KKKR4AuPFd8aTx9EF6BvutvYxmZuWLJHmnq4LvBfp0U+yFDMGwJ+AIJEH5sIP+SNypauMWzg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.0.tgz", + "integrity": "sha512-nmSVN+F2i1yKZ7rJNKO3G7ZzmxJgoQBQZ/6c4MuS553Grmr7WqR7LLDcYG53Z2m9409z3JLt4sCOhLdbKQ3HmA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.0.tgz", + "integrity": "sha512-2d0qRo33G6TfQVjaMR71P+yJVGODrt5V6+T0BDYH4EMfGgdC/2HWDVjSSFw888GSzAZUwuska3+zxNUCDco6rQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.0.tgz", + "integrity": "sha512-A1JalX4MOaFAAyGgpO7XP5khquv/7xKzLIyLmhNrbiCxWpMlnsTYr8dnsWM7sEeotNmxvSOEL7F65j0HXFcFsw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.0.tgz", + "integrity": "sha512-YQugafP/rH0eOOHGjmNgDURrpYHrIX0yuojOI8bwCyXwxC9ZdTd3vYkmddPX0oHONLXu9Rb1dDmT0VNpjkzGGw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.0.tgz", + "integrity": "sha512-zYdUYhi3Qe2fndujBqL5FjAFzvNeLxtIqfzNEVKD1I7C37/chv1VxhscWSQHTNfjPCrBFQMnynwA3kpZpZ8w4A==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.0.tgz", + "integrity": "sha512-fGk03kQylNaCOQ96HDMeT7E2n91EqvCDd3RwvT5k+xNdFCeMGnj5b5hEgTGrQuyidqSsD3zJDQ21QIaxXqTBJw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.0.tgz", + "integrity": "sha512-6iKDCVSIUQ8jPMoIV0OytRKniaYyy5EbY/RRydmLW8ZR3cEBhxbWl5ro0rkUNe0ef6sScvhbY79HrjRm8i3vDQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.19.0.tgz", + "integrity": "sha512-L7SrRibU7ZoYi1/TrZsJOFAnnHyLTE1SwHG1yNWjZIVCqjOEmCSuK2ZO9thnRbJG6TOkPp+Z963JmpCNw5nzvA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.19.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.19.0.tgz", + "integrity": "sha512-ZfWJNm2VMhKkQIKT9qXbs76RRcT0SF/CAvEz0+RkpUDAoDaCx0uFdCGzSRiD9gSlhm6AHkjdieOBJMaO2eC1rQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.19.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.4" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.19.0.tgz", + "integrity": "sha512-1hRxtYIJfJSZeM5ivbUXv9hcJP3PWRo5prG/V2sWwiubUKTa+7P62d2qxCW8jiVFX4pgRHhnHNp+qeR7Xl+6kg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.19.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.19.0.tgz", + "integrity": "sha512-dBMFzzg1QiXqCVQ5ONc0z2ebyoi5BKz+MtfByLm0o5/nbUu3Iz8uaTCa5uzGiscQKm7lVShfZHU1+OG3t5hgwg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.19.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.19.0.tgz", + "integrity": "sha512-H36qw+oh91Y0s6OlFfdSuQ0Ld+5CgB/VE6gNPK+Hk4VRbVG/XQgkjnt4KzfnnoO6tZPtKJKHPjwebOCfjd6F8A==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.19.0" + } + }, + "node_modules/@shikijs/types": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.19.0.tgz", + "integrity": "sha512-Z2hdeEQlzuntf/BZpFG8a+Fsw9UVXdML7w0o3TgSXV3yNESGon+bs9ITkQb3Ki7zxoXOOu5oJWqZ2uto06V9iQ==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", + "integrity": "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8.9.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.1.tgz", + "integrity": "sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^5.0.0", + "debug": "^4.4.1", + "deepmerge": "^4.3.1", + "magic-string": "^0.30.17", + "vitefu": "^1.1.1" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24" + }, + "peerDependencies": { + "svelte": "^5.0.0", + "vite": "^6.3.0 || ^7.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-5.0.1.tgz", + "integrity": "sha512-ubWshlMk4bc8mkwWbg6vNvCeT7lGQojE3ijDh3QTR6Zr/R+GXxsGbyH4PExEPpiFmqPhYiVSVmHBjUcVc1JIrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.1" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^6.0.0-next.0", + "svelte": "^5.0.0", + "vite": "^6.3.0 || ^7.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tsconfig/svelte": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-5.0.6.tgz", + "integrity": "sha512-yGxYL0I9eETH1/DR9qVJey4DAsCdeau4a9wYPKuXfEhm8lFO8wg+LLYJjIpAm6Fw7HSlhepPhYPDop75485yWQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/fontkit": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/fontkit/-/fontkit-2.0.8.tgz", + "integrity": "sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/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==", + "license": "MIT" + }, + "node_modules/ansi-align/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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/astro": { + "version": "5.16.4", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.16.4.tgz", + "integrity": "sha512-rgXI/8/tnO3Y9tfAaUyg/8beKhlIMltbiC8Q6jCoAfEidOyaue4KYKzbe0gJIb6qEdEaG3Kf3BY3EOSLkbWOLg==", + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.13.0", + "@astrojs/internal-helpers": "0.7.5", + "@astrojs/markdown-remark": "6.3.9", + "@astrojs/telemetry": "3.3.0", + "@capsizecss/unpack": "^3.0.1", + "@oslojs/encoding": "^1.1.0", + "@rollup/pluginutils": "^5.3.0", + "acorn": "^8.15.0", + "aria-query": "^5.3.2", + "axobject-query": "^4.1.0", + "boxen": "8.0.1", + "ci-info": "^4.3.1", + "clsx": "^2.1.1", + "common-ancestor-path": "^1.0.1", + "cookie": "^1.0.2", + "cssesc": "^3.0.0", + "debug": "^4.4.3", + "deterministic-object-hash": "^2.0.2", + "devalue": "^5.5.0", + "diff": "^5.2.0", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "es-module-lexer": "^1.7.0", + "esbuild": "^0.25.0", + "estree-walker": "^3.0.3", + "flattie": "^1.1.1", + "fontace": "~0.3.1", + "github-slugger": "^2.0.0", + "html-escaper": "3.0.3", + "http-cache-semantics": "^4.2.0", + "import-meta-resolve": "^4.2.0", + "js-yaml": "^4.1.1", + "magic-string": "^0.30.21", + "magicast": "^0.5.1", + "mrmime": "^2.0.1", + "neotraverse": "^0.6.18", + "p-limit": "^6.2.0", + "p-queue": "^8.1.1", + "package-manager-detector": "^1.5.0", + "piccolore": "^0.1.3", + "picomatch": "^4.0.3", + "prompts": "^2.4.2", + "rehype": "^13.0.2", + "semver": "^7.7.3", + "shiki": "^3.15.0", + "smol-toml": "^1.5.2", + "svgo": "^4.0.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tsconfck": "^3.1.6", + "ultrahtml": "^1.6.0", + "unifont": "~0.6.0", + "unist-util-visit": "^5.0.0", + "unstorage": "^1.17.3", + "vfile": "^6.0.3", + "vite": "^6.4.1", + "vitefu": "^1.1.1", + "xxhash-wasm": "^1.1.0", + "yargs-parser": "^21.1.1", + "yocto-spinner": "^0.2.3", + "zod": "^3.25.76", + "zod-to-json-schema": "^3.25.0", + "zod-to-ts": "^1.2.0" + }, + "bin": { + "astro": "astro.js" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/astrodotbuild" + }, + "optionalDependencies": { + "sharp": "^0.34.0" + } + }, + "node_modules/astro/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/astro/node_modules/vite": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/b4a": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.1.tgz", + "integrity": "sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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, + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.7.0.tgz", + "integrity": "sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/base-64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/boxen": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", + "cli-boxes": "^3.0.0", + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "license": "ISC" + }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cookie-es": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", + "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "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==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dedent-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", + "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.0.tgz", + "integrity": "sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/deterministic-object-hash": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", + "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", + "license": "MIT", + "dependencies": { + "base-64": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/devalue": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.5.0.tgz", + "integrity": "sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz", + "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.10", + "@esbuild/android-arm": "0.25.10", + "@esbuild/android-arm64": "0.25.10", + "@esbuild/android-x64": "0.25.10", + "@esbuild/darwin-arm64": "0.25.10", + "@esbuild/darwin-x64": "0.25.10", + "@esbuild/freebsd-arm64": "0.25.10", + "@esbuild/freebsd-x64": "0.25.10", + "@esbuild/linux-arm": "0.25.10", + "@esbuild/linux-arm64": "0.25.10", + "@esbuild/linux-ia32": "0.25.10", + "@esbuild/linux-loong64": "0.25.10", + "@esbuild/linux-mips64el": "0.25.10", + "@esbuild/linux-ppc64": "0.25.10", + "@esbuild/linux-riscv64": "0.25.10", + "@esbuild/linux-s390x": "0.25.10", + "@esbuild/linux-x64": "0.25.10", + "@esbuild/netbsd-arm64": "0.25.10", + "@esbuild/netbsd-x64": "0.25.10", + "@esbuild/openbsd-arm64": "0.25.10", + "@esbuild/openbsd-x64": "0.25.10", + "@esbuild/openharmony-arm64": "0.25.10", + "@esbuild/sunos-x64": "0.25.10", + "@esbuild/win32-arm64": "0.25.10", + "@esbuild/win32-ia32": "0.25.10", + "@esbuild/win32-x64": "0.25.10" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esm-env": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", + "license": "MIT" + }, + "node_modules/esrap": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.1.tgz", + "integrity": "sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/events-universal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.0.tgz", + "integrity": "sha512-1KVXP1Oq8SiC0HsRraCryA4XGrZ2uJgIt/h4X+mB/8pzMKE7L8yBDN2lBlqJZeUwLAt7kf80m/5GX3HvoCrSGA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fontace": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.3.1.tgz", + "integrity": "sha512-9f5g4feWT1jWT8+SbL85aLIRLIXUaDygaM2xPXRmzPYxrOMNok79Lr3FGJoKVNKibE0WCunNiEVG2mwuE+2qEg==", + "license": "MIT", + "dependencies": { + "@types/fontkit": "^2.0.8", + "fontkit": "^2.0.4" + } + }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/h3": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.4.tgz", + "integrity": "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==", + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.2", + "crossws": "^0.3.5", + "defu": "^6.1.4", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.2", + "radix3": "^1.1.2", + "ufo": "^1.6.1", + "uncrypto": "^0.1.3" + } + }, + "node_modules/hast-util-definition-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hast-util-definition-list/-/hast-util-definition-list-2.1.0.tgz", + "integrity": "sha512-n3U2gleI8TYZ6eVFjE9TZsGTpaOQlMQj10+WZZFn6Ts5uEu/7XzB8HVLNeu5Sgu7Rv96ThFp79/U6bf/4pS0ew==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.4", + "@types/mdast": "^4.0.3", + "@types/unist": "^3.0.2", + "hast-util-to-mdast": "^10.1.0", + "mdast-util-definition-list": "^2.0.0", + "mdast-util-phrasing": "^4.1.0" + } + }, + "node_modules/hast-util-embedded": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", + "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-body-ok-link": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", + "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-minify-whitespace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", + "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-is-body-ok-link": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-mdast": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/hast-util-to-mdast/-/hast-util-to-mdast-10.1.2.tgz", + "integrity": "sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-phrasing": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "hast-util-to-text": "^4.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-minify-whitespace": "^6.0.0", + "trim-trailing-lines": "^2.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" + }, + "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==", + "license": "MIT", + "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-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "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/lazystream/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, + "license": "MIT" + }, + "node_modules/lazystream/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, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "license": "MIT" + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", + "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "source-map-js": "^1.2.1" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-definition-list": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definition-list/-/mdast-util-definition-list-2.0.0.tgz", + "integrity": "sha512-aFWuASQs77BJndNSDcNdvB1HRqWZBptcEjwv67mnPbaAZsfwMHxI8MwoQxAz4I2bHx41hft/HDRC57ZkhpayOQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.1", + "@types/unist": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-hast": "^13.0.2", + "mdast-util-to-markdown": "^2.1.0", + "micromark-extension-definition-list": "^2.0.0", + "unist-builder": "^4.0.0" + } + }, + "node_modules/mdast-util-definitions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", + "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-definition-list": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-definition-list/-/micromark-extension-definition-list-2.0.1.tgz", + "integrity": "sha512-lQSkVTWNR0f9qzUbM4p0chJSecIRYvZBjnI+cWqN0k2zDSvzpduGJifWJj4SpCWF4TlpNV9amCF8Y1VEXdJubQ==", + "license": "MIT", + "dependencies": { + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.1", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "ts-dedent": "^2.2.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neotraverse": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", + "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "license": "MIT" + }, + "node_modules/node-mock-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", + "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "license": "MIT", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz", + "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/p-limit": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", + "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", + "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "license": "MIT" + }, + "node_modules/parse-latin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/piccolore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz", + "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==", + "license": "ISC" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prettier": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", + "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-astro": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.14.1.tgz", + "integrity": "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.9.1", + "prettier": "^3.0.0", + "sass-formatter": "^0.7.6" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.4.0.tgz", + "integrity": "sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "prettier": "^3.0.0", + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.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, + "license": "MIT" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/rehype": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-minify-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.2.tgz", + "integrity": "sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-minify-whitespace": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-definition-list": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-definition-list/-/remark-definition-list-2.0.0.tgz", + "integrity": "sha512-OOJ0zUrfUGITUNxOBnsipyFUjqq1m4AgYOqQk10jDXyz+RoODJL3qYvRn8qzYQDzRnz1wlCP3dbDEOpl05LlQw==", + "license": "MIT", + "dependencies": { + "hast-util-definition-list": "^2.0.0", + "mdast-util-definition-list": "^2.0.0", + "micromark-extension-definition-list": "^2.0.0" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-smartypants": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", + "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", + "license": "MIT", + "dependencies": { + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" + }, + "node_modules/retext": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", + "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", + "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rollup": { + "version": "4.52.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.0.tgz", + "integrity": "sha512-+IuescNkTJQgX7AkIDtITipZdIGcWF0pnVvZTWStiazUmcGA2ag8dfg0urest2XlXUi9kuhfQ+qmdc5Stc3z7g==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.52.0", + "@rollup/rollup-android-arm64": "4.52.0", + "@rollup/rollup-darwin-arm64": "4.52.0", + "@rollup/rollup-darwin-x64": "4.52.0", + "@rollup/rollup-freebsd-arm64": "4.52.0", + "@rollup/rollup-freebsd-x64": "4.52.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.0", + "@rollup/rollup-linux-arm-musleabihf": "4.52.0", + "@rollup/rollup-linux-arm64-gnu": "4.52.0", + "@rollup/rollup-linux-arm64-musl": "4.52.0", + "@rollup/rollup-linux-loong64-gnu": "4.52.0", + "@rollup/rollup-linux-ppc64-gnu": "4.52.0", + "@rollup/rollup-linux-riscv64-gnu": "4.52.0", + "@rollup/rollup-linux-riscv64-musl": "4.52.0", + "@rollup/rollup-linux-s390x-gnu": "4.52.0", + "@rollup/rollup-linux-x64-gnu": "4.52.0", + "@rollup/rollup-linux-x64-musl": "4.52.0", + "@rollup/rollup-openharmony-arm64": "4.52.0", + "@rollup/rollup-win32-arm64-msvc": "4.52.0", + "@rollup/rollup-win32-ia32-msvc": "4.52.0", + "@rollup/rollup-win32-x64-gnu": "4.52.0", + "@rollup/rollup-win32-x64-msvc": "4.52.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/s.color": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz", + "integrity": "sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==", + "dev": true, + "license": "MIT" + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/sass-formatter": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.9.tgz", + "integrity": "sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "suf-log": "^2.5.3" + } + }, + "node_modules/sax": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", + "license": "BlueOak-1.0.0" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/send/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "license": "ISC" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sharp": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.4.tgz", + "integrity": "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.0", + "semver": "^7.7.2" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.4", + "@img/sharp-darwin-x64": "0.34.4", + "@img/sharp-libvips-darwin-arm64": "1.2.3", + "@img/sharp-libvips-darwin-x64": "1.2.3", + "@img/sharp-libvips-linux-arm": "1.2.3", + "@img/sharp-libvips-linux-arm64": "1.2.3", + "@img/sharp-libvips-linux-ppc64": "1.2.3", + "@img/sharp-libvips-linux-s390x": "1.2.3", + "@img/sharp-libvips-linux-x64": "1.2.3", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", + "@img/sharp-libvips-linuxmusl-x64": "1.2.3", + "@img/sharp-linux-arm": "0.34.4", + "@img/sharp-linux-arm64": "0.34.4", + "@img/sharp-linux-ppc64": "0.34.4", + "@img/sharp-linux-s390x": "0.34.4", + "@img/sharp-linux-x64": "0.34.4", + "@img/sharp-linuxmusl-arm64": "0.34.4", + "@img/sharp-linuxmusl-x64": "0.34.4", + "@img/sharp-wasm32": "0.34.4", + "@img/sharp-win32-arm64": "0.34.4", + "@img/sharp-win32-ia32": "0.34.4", + "@img/sharp-win32-x64": "0.34.4" + } + }, + "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, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.19.0.tgz", + "integrity": "sha512-77VJr3OR/VUZzPiStyRhADmO2jApMM0V2b1qf0RpfWya8Zr1PeZev5AEpPGAAKWdiYUtcZGBE4F5QvJml1PvWA==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.19.0", + "@shikijs/engine-javascript": "3.19.0", + "@shikijs/engine-oniguruma": "3.19.0", + "@shikijs/langs": "3.19.0", + "@shikijs/themes": "3.19.0", + "@shikijs/types": "3.19.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/smol-toml": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.5.2.tgz", + "integrity": "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamx": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "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, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/suf-log": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz", + "integrity": "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==", + "dev": true, + "license": "MIT", + "dependencies": { + "s.color": "0.0.15" + } + }, + "node_modules/svelte": { + "version": "5.45.6", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.45.6.tgz", + "integrity": "sha512-V3aVXthzPyPt1UB1wLEoXnEXpwPsvs7NHrR0xkCor8c11v71VqBj477MClqPZYyrcXrAH21sNGhOj9FJvSwXfQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/estree": "^1.0.5", + "acorn": "^8.12.1", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "clsx": "^2.1.1", + "devalue": "^5.5.0", + "esm-env": "^1.2.1", + "esrap": "^2.2.1", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/svelte-check": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.3.4.tgz", + "integrity": "sha512-DVWvxhBrDsd+0hHWKfjP99lsSXASeOhHJYyuKOFYJcP7ThfSCKgjVarE8XfuMWpS5JV3AlDf+iK1YGGo2TACdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "chokidar": "^4.0.1", + "fdir": "^6.2.0", + "picocolors": "^1.0.0", + "sade": "^1.7.4" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "typescript": ">=5.0.0" + } + }, + "node_modules/svelte2tsx": { + "version": "0.7.43", + "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.43.tgz", + "integrity": "sha512-TtxMuk520th4ZEvUQrhbDAyyQ1I+kc5dZCA4ChOLlbVXZfqenrY45iTH27DpLyx/u4STEz8O3hkGm5goTS8JhQ==", + "license": "MIT", + "dependencies": { + "dedent-js": "^1.0.1", + "pascal-case": "^3.1.1" + }, + "peerDependencies": { + "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0", + "typescript": "^4.9.4 || ^5.0.0" + } + }, + "node_modules/svgo": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz", + "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", + "license": "MIT", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.4.1" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trim-trailing-lines": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-2.1.0.tgz", + "integrity": "sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/tsconfck": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", + "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", + "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "license": "MIT" + }, + "node_modules/ultrahtml": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", + "license": "MIT" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unifont": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.6.0.tgz", + "integrity": "sha512-5Fx50fFQMQL5aeHyWnZX9122sSLckcDvcfFiBf3QYeHa7a1MKJooUy52b67moi2MJYkrfo/TWY+CoLdr/w0tTA==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0", + "ofetch": "^1.4.1", + "ohash": "^2.0.0" + } + }, + "node_modules/unist-builder": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-4.0.0.tgz", + "integrity": "sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unstorage": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.3.tgz", + "integrity": "sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.5", + "h3": "^1.15.4", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.1" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3 || ^7.0.0", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/unstorage/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.7.tgz", + "integrity": "sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/vitefu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", + "license": "MIT", + "dependencies": { + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/xxhash-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", + "license": "MIT" + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yocto-spinner": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.3.tgz", + "integrity": "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==", + "license": "MIT", + "dependencies": { + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18.19" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zimmerframe": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", + "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", + "license": "MIT" + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz", + "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.25 || ^4" + } + }, + "node_modules/zod-to-ts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz", + "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==", + "peerDependencies": { + "typescript": "^4.9.4 || ^5.0.2", + "zod": "^3" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } - } - }, - "zone.js": { - "version": "0.11.5", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.5.tgz", - "integrity": "sha512-D1/7VxEuQ7xk6z/kAROe4SUbd9CzxY4zOwVGnGHerd/SgLIVU5f4esDzQUsOCeArn933BZfWMKydH7l7dPEp0g==", - "requires": { - "tslib": "^2.3.0" - } } - } } diff --git a/package.json b/package.json index 570985b6..bbba1d97 100644 --- a/package.json +++ b/package.json @@ -1,55 +1,43 @@ { - "name": "zonemaster-gui", - "version": "4.4.0", - "license": "BSD-2-Clause", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build --configuration production", - "release": "npm run build && node scripts/create_release.js", - "lint": "ng lint", - "e2e": "playwright --version && playwright test", - "e2e:update": "playwright --version && playwright test --update-snapshots", - "e2e:install": "playwright install chromium", - "e2e:install-deps": "playwright install-deps chromium", - "e2e:test-server": "ng build --configuration=tests --localize && node scripts/test_server.js", - "i18n:extract": "ng extract-i18n --remove-ids-with-prefix ngb.datepicker --remove-ids-with-prefix ngb.carousel --remove-ids-with-prefix ngb.alert --remove-ids-with-prefix ngb.timepicker --remove-ids-with-prefix ngb.toast --output-path src/locale --trim --new-translation-targets-blank omit" - }, - "private": false, - "dependencies": { - "@angular/animations": "^13.3.11", - "@angular/common": "^13.3.11", - "@angular/compiler": "^13.3.11", - "@angular/core": "^13.3.11", - "@angular/forms": "^13.3.11", - "@angular/localize": "^13.3.11", - "@angular/platform-browser": "^13.3.11", - "@angular/platform-browser-dynamic": "^13.3.11", - "@angular/router": "^13.3.11", - "@ng-bootstrap/ng-bootstrap": "^12.0.0", - "bootstrap": "^5.2.0", - "file-saver": "^2.0.2", - "fork-awesome": "^1.2.0", - "punycode": "^2.3.1", - "rxjs": "^6.6.0", - "tslib": "^2.0.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^13.3.9", - "@angular/cli": "^13.3.9", - "@angular/compiler-cli": "^13.3.11", - "@angular/language-service": "^13.3.11", - "@playwright/test": "^1.44.1", - "@types/file-saver": "^2.0.1", - "@types/node": "^13.11.0", - "archiver": "^3.1.1", - "ng-extract-i18n-merge": "^2.3.0", - "typescript": "^4.6.4" - }, - "overrides": { - "webpack": "5.94.0", - "postcss": "8.4.31", - "semver": "7.5.2" - } + "name": "zonemaster-gui", + "version": "v5.0.0", + "license": "BSD-2-Clause", + "scripts": { + "start": "npm run dev", + "dev": "astro dev", + "build": "astro build", + "release": "npm run build && node scripts/create_release.js", + "preview": "astro preview", + "astro": "astro", + "lib:build": "cd src/lib && vite build -c ./vite.config.js --outDir ../../dist --emptyOutDir", + "lib:demo": "vite serve demo -c src/lib/vite.config.js", + "e2e": "playwright --version && playwright test", + "e2e:update": "playwright --version && playwright test --update-snapshots", + "e2e:install": "playwright install chromium", + "e2e:install-deps": "playwright install-deps chromium" + }, + "private": false, + "type": "module", + "dependencies": { + "@astrojs/node": "^9.5.1", + "@astrojs/svelte": "^7.2.2", + "astro": "^5.16.4", + "punycode": "^2.3.1", + "remark-definition-list": "^2.0.0", + "remark-gfm": "^4.0.1", + "svelte": "^5.45.6" + }, + "devDependencies": { + "@playwright/test": "^1.57.0", + "@sveltejs/vite-plugin-svelte": "^6.2.1", + "@tsconfig/svelte": "^5.0.6", + "@types/node": "^24.10.1", + "archiver": "^7.0.1", + "prettier": "3.7.4", + "prettier-plugin-astro": "0.14.1", + "prettier-plugin-svelte": "^3.4.0", + "svelte-check": "^4.3.4", + "typescript": "^5.9.3", + "vite": "^7.2.7" + } } diff --git a/playwright.config.ts b/playwright.config.ts index 29904ae1..71e06bf7 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,28 +1,30 @@ -import { PlaywrightTestConfig, devices } from '@playwright/test'; +import { type PlaywrightTestConfig, devices } from '@playwright/test'; const config: PlaywrightTestConfig = { - testDir: 'e2e', - testMatch: 'e2e/*.e2e-spec.ts', - webServer: { - command: 'ng build --configuration=tests --localize && node scripts/test_server.js', - port: 4201, - reuseExistingServer: true, - }, - expect: { - toMatchSnapshot: { - maxDiffPixelRatio: 0.01, + workers: 4, + testDir: 'e2e', + testMatch: 'e2e/*.e2e-spec.ts', + webServer: { + command: 'NODE_ENV=testing npm run build && NODE_ENV=testing npm run preview', + url: 'http://localhost:4321/', + timeout: 120 * 1000, + reuseExistingServer: !process.env.CI }, - }, - use: { - headless: true, - baseURL: 'http://localhost:4201', - viewport: { width: 1920, height: 1080 }, - }, - projects: [ - { - name: 'chromium', - ...devices['Desktop Chrome'], - } - ] + expect: { + toMatchSnapshot: { + maxDiffPixelRatio: 0.01 + } + }, + use: { + headless: true, + baseURL: 'http://localhost:4321', + viewport: { width: 1920, height: 1080 } + }, + projects: [ + { + name: 'chromium', + ...devices['Desktop Chrome'] + }, + ], }; export default config; diff --git a/proxy.conf.json b/proxy.conf.json deleted file mode 100644 index 76c26375..00000000 --- a/proxy.conf.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "/api": { - "target": "http://localhost:5000/", - "changeOrigin": true, - "secure": false, - "logLevel": "debug", - "pathRewrite": { - "^/api": "" - } - } -} diff --git a/proxy.disabled.conf.json b/proxy.disabled.conf.json deleted file mode 100644 index 0967ef42..00000000 --- a/proxy.disabled.conf.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/scripts/create_release.js b/scripts/create_release.js index dda16373..0a2231ad 100644 --- a/scripts/create_release.js +++ b/scripts/create_release.js @@ -1,30 +1,51 @@ -const fs = require('fs'); -const archiver = require('archiver'); - -const output = fs.createWriteStream('zonemaster_web_gui.zip'); -const archive = archiver('zip', { - zlib: { level: 9 } // Sets the compression level. -}); - -output.on('close', function () { - console.log(archive.pointer() + ' total bytes'); - console.log('archiver has been finalized and the output file descriptor has closed.'); -}); - -archive.on('error', function(err){ - throw err; -}); - -archive.pipe(output); - -archive.file('zonemaster.conf-example', { name: 'zonemaster.conf-example' }); -archive.file('LICENSE', { name: 'LICENSE' }); - -const localizedBundles = fs.readdirSync('dist', {withFileTypes: true}) - .filter(entry => entry.isDirectory()) - .map(entry => entry.name); - -archive.glob('dist/**', {ignore: '**/assets/**'}); -archive.directory(`dist/${localizedBundles[0]}/assets`, 'dist/assets'); - -archive.finalize(); +import fs from 'fs'; +import path from 'path'; +import archiver from 'archiver'; +import { readFileSync } from 'fs'; + +// Read package.json to get version +const packageJson = JSON.parse( + readFileSync(new URL('../package.json', import.meta.url)) +); + +export async function zipDirectory(sourceDir, outPath) { + const output = fs.createWriteStream(outPath); + const archive = archiver('zip', { + zlib: { level: 9 } + }); + + return new Promise((resolve, reject) => { + output.on('close', () => { + console.log(`Zipped ${archive.pointer()} total bytes`); + resolve(); + }); + + archive.on('error', err => reject(err)); + + archive.pipe(output); + archive.directory(sourceDir, false); // `false` keeps only folder contents + archive.finalize(); + }); +} + +// Example usage +const __dirname = path.dirname(new URL(import.meta.url).pathname); +const inputDir = path.resolve(__dirname, '../public'); +const version = packageJson.version; +const outputZip = path.resolve(__dirname, `../zonemaster_web_gui_${version}.zip`); + +// Copy zonemaster.conf-example into public +const file1Src = path.resolve(__dirname, '../zonemaster.conf-example'); +const file1Dest = path.resolve(inputDir, 'zonemaster.conf-example'); +fs.copyFileSync(file1Src, file1Dest); +console.log('Include zonemaster.conf-example in distribution zip file'); + +// Copy LICENSE into public +const file2Src = path.resolve(__dirname, '../LICENSE'); +const file2Dest = path.resolve(inputDir, 'LICENSE'); +fs.copyFileSync(file2Src, file2Dest); +console.log('Include LICENSE in distribution zip file'); + +zipDirectory(inputDir, outputZip) + .then(() => console.log('Zip complete')) + .catch(err => console.error('Error zipping:', err)); diff --git a/scripts/generate-messages.ts b/scripts/generate-messages.ts new file mode 100644 index 00000000..6f71ffa6 --- /dev/null +++ b/scripts/generate-messages.ts @@ -0,0 +1,166 @@ +import fs from 'fs'; +import path from 'path'; + +// Regex to find placeholders like {variableName} +const placeholderRegex = /\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g; + +interface Messages { + [key: string]: string; +} + +interface AllMessages { + [lang: string]: Messages; +} + +interface GenerateConfig { + defaultLanguage: string; + enabledLanguages: string[]; +} + +function getFileHeader(): string { + return `/* Auto-generated by vite-plugin-messages - DO NOT EDIT */\n/* Generated: ${new Date().toISOString()} */\n`; +} + +export function generateMessages(langDir: string, outDir: string, config: GenerateConfig) { + const { defaultLanguage, enabledLanguages } = config; + + if (!fs.existsSync(outDir)) { + fs.mkdirSync(outDir, { recursive: true }); + } + + const allMessages: AllMessages = {}; + + for (const lang of enabledLanguages) { + const filePath = path.join(langDir, `${lang}.json`); + try { + const content = fs.readFileSync(filePath, 'utf-8'); + allMessages[lang] = JSON.parse(content); + } catch (e) { + console.warn(`⚠️ Failed to load ${lang}.json:`, e instanceof Error ? e.message : String(e)); + allMessages[lang] = {}; + } + } + + if (Object.keys(allMessages).length === 0) { + console.warn('⚠️ No language files found'); + return; + } + + const defaultMessages = allMessages[defaultLanguage] || {}; + const allKeys = Object.keys(defaultMessages); + + for (const lang of enabledLanguages) { + const messages = allMessages[lang] || {}; + const functions: string[] = []; + const reExports: string[] = []; + + for (const key of allKeys) { + const hasTranslation = key in messages; + + if (hasTranslation) { + functions.push(createMessageFunction(key, messages[key])); + } else if (lang !== defaultLanguage) { + reExports.push(key); + } + } + + let content = getFileHeader(); + + if (reExports.length > 0) { + content += `\nexport { ${reExports.join(', ')} } from './${defaultLanguage}.ts';\n`; + } + + if (functions.length > 0) { + content += `\n${functions.join('\n\n')}\n`; + } + + const filePath = path.join(outDir, `${lang}.ts`); + fs.writeFileSync(filePath, content, 'utf-8'); + console.log(`✅ Generated messages/${lang}.ts (${functions.length} translated, ${reExports.length} re-exported)`); + } + + generateIndexFile(outDir, allKeys, defaultMessages, config); +} + +function extractPlaceholders(value: string): string[] { + const matches = value.matchAll(placeholderRegex); + const placeholders = new Set(); + for (const match of matches) { + placeholders.add(match[1]); + } + return Array.from(placeholders); +} + +function escapeTemplateString(value: string): string { + // Escape backticks and ${} that are not our placeholders + return value + .replace(/\\/g, '\\\\') + .replace(/`/g, '\\`'); +} + +function createMessageFunction(key: string, value: string): string { + const placeholders = extractPlaceholders(value); + const templateString = value.replace(placeholderRegex, '${params.$1}'); + const escapedTemplate = escapeTemplateString(templateString); + + if (placeholders.length > 0) { + const paramsType = placeholders.map(p => `${p}: string | number`).join(', '); + return `export const ${key} = (params: { ${paramsType} }): string => \`${escapedTemplate}\`;`; + } + return `export const ${key} = (): string => \`${escapedTemplate}\`;`; +} + +function generateIndexFile(outDir: string, allKeys: string[], defaultMessages: Messages, config: GenerateConfig) { + const { enabledLanguages } = config; + + const langImports = enabledLanguages + .map(lang => `import * as ${lang} from './${lang}.ts';`) + .join('\n'); + + const langObject = enabledLanguages.join(', '); + const languageType = enabledLanguages.map(l => `'${l}'`).join(' | '); + const messageExports: string[] = []; + + for (const key of allKeys) { + const value = defaultMessages[key] || ''; + const placeholders = extractPlaceholders(value); + const paramsType = placeholders.length > 0 + ? `params: { ${placeholders.map(p => `${p}: string | number`).join(', ')} }` + : ''; + const paramsArg = paramsType ? 'params' : ''; + + messageExports.push( + `export const ${key} = (${paramsType}): string => allMessages[getLocale()].${key}(${paramsArg});` + ); + } + + const content = `${getFileHeader()} +import config from '@/config'; + +${langImports} + +const allMessages = { ${langObject} } as const; + +export type Language = ${languageType}; + +export const defaultLanguage: Language = '${config.defaultLanguage}'; +export const enabledLanguages: readonly Language[] = ${JSON.stringify(config.enabledLanguages)} as const; + +let _locale: Language = defaultLanguage; + +export const getLocale = (): Language => _locale; +export const isValidLocale = (locale: unknown): locale is Language => enabledLanguages.includes(locale as Language); +export const setLocale = (locale: unknown): void => { + if (isValidLocale(locale)) { + _locale = locale as Language; + } +}; + +// Message functions +${messageExports.join('\n\n')} +`; + + const filePath = path.join(outDir, 'index.ts'); + fs.writeFileSync(filePath, content, 'utf-8'); + console.log('✅ Generated messages/index.ts'); +} diff --git a/scripts/messages-plugin.ts b/scripts/messages-plugin.ts new file mode 100644 index 00000000..e123afb8 --- /dev/null +++ b/scripts/messages-plugin.ts @@ -0,0 +1,69 @@ +import path from 'path'; +import { generateMessages } from './generate-messages.ts'; + +interface MessagesPluginConfig { + defaultLanguage: string; + enabledLanguages: string[]; +} + +function validateConfig(config: any): asserts config is MessagesPluginConfig { + const errors = []; + if (!config?.defaultLanguage) errors.push('defaultLanguage is required'); + if (!Array.isArray(config?.enabledLanguages) || !config.enabledLanguages.length) + errors.push('enabledLanguages must be a non-empty array'); + if (config?.enabledLanguages?.some((l: any) => typeof l !== 'string')) + errors.push('enabledLanguages must contain only strings'); + + if (errors.length) throw new Error(`messagesPlugin: ${errors.join(', ')}`); +} + +export function messagesIntegration() { + return { + name: 'messages-integration', + hooks: { + 'astro:config:setup': ({ injectScript }: any) => { + injectScript( + 'before-hydration', + ` + import { setLocale } from '@/messages'; + setLocale(document.documentElement.lang); + ` + ); + }, + }, + }; +} + +export default function messagesPlugin(config: MessagesPluginConfig) { + validateConfig(config); + + const langDir = path.resolve(process.cwd(), 'messages'); + const outDir = path.resolve(process.cwd(), 'src/messages'); + + const regenerate = () => { + console.log('🔄 Generating message files...'); + generateMessages(langDir, outDir, config); + }; + + return { + name: 'vite-plugin-messages', + + buildStart() { + regenerate(); + }, + + configureServer(server: any) { + server.watcher.add(langDir); + }, + + handleHotUpdate({ file, server }: { file: string; server: any }) { + if (file.startsWith(langDir) && file.endsWith('.json')) { + console.log('♻️ Language file changed:', path.basename(file)); + regenerate(); + // Trigger a full reload to pick up the new messages + server.ws.send({ type: 'full-reload' }); + return []; + } + }, + }; +} diff --git a/scripts/test_server.js b/scripts/test_server.js deleted file mode 100644 index 588a037c..00000000 --- a/scripts/test_server.js +++ /dev/null @@ -1,26 +0,0 @@ -const path = require('path'); -const express = require('express'); - -const DIST_DIR = path.resolve(__dirname, '../dist'); -const PORT = 4201; -const app = express(); - -app.use(express.static(DIST_DIR)); - -app.use('/:lang', (req, res, next) => { - const lang = req.params.lang; - - if (!lang.match(/^[a-z]{2}$/)) { - return next(); - } - - res.sendFile(path.join(DIST_DIR, `${lang}/index.html`)); -}); - -app.get('/*', (req, res) => { - res.redirect('/en' + req.originalUrl); -}); - -app.listen(PORT, () => { - console.log(`Starting test server port ${PORT}...`); -}); diff --git a/src/.htaccess b/src/.htaccess deleted file mode 100644 index 9b1feb96..00000000 --- a/src/.htaccess +++ /dev/null @@ -1,13 +0,0 @@ - - Options Indexes FollowSymLinks - RewriteEngine On - RewriteBase / - -# If an existing asset or directory is requested go to it as it is - RewriteCond %{REQUEST_FILENAME} -f [OR] - RewriteCond %{REQUEST_FILENAME} -d - RewriteRule ^ - [L] - -# If the requested resource doesn't exist, use index.html - RewriteRule ^ /index.html - diff --git a/src/app/app.component.css b/src/app/app.component.css deleted file mode 100644 index eaa3dbf9..00000000 --- a/src/app/app.component.css +++ /dev/null @@ -1,9 +0,0 @@ -app-root { - min-height: 100vh; - display: flex; - flex-direction: column; -} - -main { - flex-grow: 1; -} diff --git a/src/app/app.component.html b/src/app/app.component.html deleted file mode 100644 index d901ff2c..00000000 --- a/src/app/app.component.html +++ /dev/null @@ -1,7 +0,0 @@ - - - -
- -
- diff --git a/src/app/app.component.ts b/src/app/app.component.ts deleted file mode 100644 index f3782493..00000000 --- a/src/app/app.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Component } from '@angular/core'; -import { ViewEncapsulation } from '@angular/core'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: [ - './app.component.css' - ], - encapsulation: ViewEncapsulation.None -}) -export class AppComponent { -} diff --git a/src/app/app.module.ts b/src/app/app.module.ts deleted file mode 100644 index df1b7e96..00000000 --- a/src/app/app.module.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { NgModule, APP_INITIALIZER } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; -import { RouterModule, Routes } from '@angular/router'; -import { HttpClientModule } from '@angular/common/http'; -import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { environment } from '../environments/environment'; - -import { AppComponent } from './app.component'; -import { DomainComponent } from './components/domain/domain.component'; -import { RunTestComponent } from './components/run-test/run-test.component'; -import { FaqComponent } from './components/faq/faq.component'; -import { PageNotFoundComponent } from './components/page-not-found/page-not-found.component'; -import { NavigationComponent } from './components/navigation/navigation.component'; -import { FooterComponent } from './components/footer/footer.component'; -import { FormComponent } from './components/form/form.component'; -import { ResultComponent } from './components/result/result.component'; -import { HistoryComponent } from './components/history/history.component'; -import { AlertComponent } from './components/alert/alert.component'; -import { FaqQuestionComponent } from './components/faq-question/faq-question.component'; -import { MessageBannerComponent } from './components/message-banner/message-banner.component'; - -import { RomanizePipe } from './pipes/romanize.pipe'; -import { SafeHtmlPipe } from './pipes/safe-html.pipe'; - -import { AppService } from './services/app.service'; -import { DnsCheckService } from './services/dns-check.service'; -import { AlertService } from './services/alert.service'; -import { NavigationService } from './services/navigation.service'; -import { HeaderComponent } from './components/header/header.component'; - -const appRoutes: Routes = [ - { path: 'run-test/:domain', component: DomainComponent }, - { path: 'run-test', component: DomainComponent }, - { path: 'result/:testId', component: ResultComponent }, - { path: 'faq', component: FaqComponent }, - - { path: 'domain_check', redirectTo: 'run-test', pathMatch: 'full' }, - { path: 'test/:testId', redirectTo: 'result/:testId', pathMatch: 'full' }, - { path: '', redirectTo: 'run-test', pathMatch: 'full' }, - - { path: '**', component: PageNotFoundComponent } -]; - -@NgModule({ - declarations: [ - AppComponent, - DomainComponent, - RunTestComponent, - FaqComponent, - PageNotFoundComponent, - NavigationComponent, - FooterComponent, - FormComponent, - RomanizePipe, - SafeHtmlPipe, - ResultComponent, - HistoryComponent, - AlertComponent, - HeaderComponent, - FaqQuestionComponent, - MessageBannerComponent, - ], - imports: [ - BrowserModule, - NgbModule, - HttpClientModule, - ReactiveFormsModule, - FormsModule, - RouterModule.forRoot( - appRoutes, - { enableTracing: false, relativeLinkResolution: 'legacy' } // <-- debugging purposes only - ) - ], - providers: [ - AppService, - DnsCheckService, - AlertService, - NavigationService, - { - provide: APP_INITIALIZER, - useFactory: (appService: AppService) => { - return () => appService.loadConfig() - }, - multi: true, - deps: [AppService] - }, - ...environment.extraProvider, - ], - bootstrap: [AppComponent] -}) - -export class AppModule {} diff --git a/src/app/components/alert/alert.component.css b/src/app/components/alert/alert.component.css deleted file mode 100644 index e9c9d794..00000000 --- a/src/app/components/alert/alert.component.css +++ /dev/null @@ -1,13 +0,0 @@ -.alert-area { - z-index: 999; - position: absolute; - max-width: inherit; - width: 100%; - padding-top: 1rem; -} - -app-alert { - position: sticky; - top: 0; - z-index: 1020; -} diff --git a/src/app/components/alert/alert.component.html b/src/app/components/alert/alert.component.html deleted file mode 100644 index addcacd7..00000000 --- a/src/app/components/alert/alert.component.html +++ /dev/null @@ -1,8 +0,0 @@ -
-
- -
-
diff --git a/src/app/components/alert/alert.component.ts b/src/app/components/alert/alert.component.ts deleted file mode 100644 index 0e86ff1d..00000000 --- a/src/app/components/alert/alert.component.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { ViewEncapsulation } from '@angular/core'; - -import { Alert, AlertType } from '../../models/index'; -import { AlertService } from '../../services/alert.service'; - -@Component({ - selector: 'app-alert', - templateUrl: './alert.component.html', - styleUrls: ['./alert.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class AlertComponent implements OnInit { - - alerts: Alert[] = []; - public navHeight: number; - - constructor( - private alertService: AlertService, - ) { - - } - - ngOnInit() { - this.alertService.getAlert().subscribe((alert: Alert) => { - if (!alert) { - this.alerts = []; - return; - } - - this.alerts.push(alert); - - setTimeout(() => this.removeAlert(alert), 5000); - }); - } - - removeAlert(alert: Alert) { - this.alerts = this.alerts.filter(x => x !== alert); - } - - cssClass(alert: Alert) { - if (!alert) { - return; - } - switch (alert.type) { - case AlertType.Success: - return 'alert alert-success'; - case AlertType.Error: - return 'alert alert-danger'; - case AlertType.Info: - return 'alert alert-info'; - case AlertType.Warning: - return 'alert alert-warning'; - } - } -} diff --git a/src/app/components/domain/domain.component.css b/src/app/components/domain/domain.component.css deleted file mode 100644 index d8381a27..00000000 --- a/src/app/components/domain/domain.component.css +++ /dev/null @@ -1,50 +0,0 @@ -.about article { - display: flex; -} - -.about { - padding: 0; -} - -.about .illustration { - background-size: contain; - background-repeat: no-repeat; - background-position: center; -} - -.about #home_illustration1 { - background-image: url('assets/images/person_looking_at_computer.svg'); -} - -.about #home_illustration2 { - background-image: url('assets/images/world_connected.svg'); -} - -.about article { - display: flex; - gap: 2rem; -} - -.about article:not(:last-of-type) { - margin-bottom: 4rem; -} - -.about article > * { - flex: 1; -} - -@media(max-width:991px) { - .about .illustration { - flex-basis: 30%; - } - - .about .about-content { - flex-basis: 70%; - } -} - -@media(max-width: 767px) { - .about .illustration { - display: none; - } -} diff --git a/src/app/components/domain/domain.component.html b/src/app/components/domain/domain.component.html deleted file mode 100644 index 8e1f4c63..00000000 --- a/src/app/components/domain/domain.component.html +++ /dev/null @@ -1,49 +0,0 @@ - -

Check how your domain is doing

- -

Test your domain

-
-
-
-
-
-
-

What is Zonemaster?

-

- Give your domain name a complete checkup! Zonemaster helps you assess how your domain - name is doing. -

-

- When a domain name is sent to Zonemaster for testing, - Zonemaster investigates the state of the domain name - from the top to the bottom of the DNS tree. This is usually done by - examining DNS data from the root, '.', to the Top-Level Domain (TLD) - for that domain name, like '.net', and then finally through the DNS servers that contain authoritative - information about the specified domain name. -

-

- Zonemaster performs many tests, such as checking DNSSEC signatures, or that different - hosts can be accessed and that IP addresses are valid. This is all to make sure that - your domain name runs as smoothly as possible. -

-
-
- -
-
-

A word about the DNS

-

- The Domain Name System (DNS) is a database that associates domain names - to Internet Protocol (IP) addresses, the same way a phone book associates names - to phone numbers. An IP address is a unique series of numbers that identifies every - computer that is connected to the Internet. It is similar to the way every telephone - has its own number in the telephone network. Such long series of numbers work fine - for computers, but for people it is way more difficult to memorize. Thus, the DNS has - been developed as an extra layer to map between names that we can remember better and - IP addresses used by computers whenever we want to reach a specific website or use - other services on the Internet, like e-mail. -

-
-
-
-
diff --git a/src/app/components/domain/domain.component.ts b/src/app/components/domain/domain.component.ts deleted file mode 100644 index fda12ba8..00000000 --- a/src/app/components/domain/domain.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; -import {ViewEncapsulation} from '@angular/core'; - -@Component({ - selector: 'app-domain', - templateUrl: './domain.component.html', - styleUrls: ['./domain.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class DomainComponent { -} diff --git a/src/app/components/faq-question/faq-question.component.css b/src/app/components/faq-question/faq-question.component.css deleted file mode 100644 index 565bd45f..00000000 --- a/src/app/components/faq-question/faq-question.component.css +++ /dev/null @@ -1,17 +0,0 @@ -.faq-question { - margin-bottom: 1rem; -} - -.faq-question h3 { - display: inline; - font-size: 1.2rem; -} - -.faq-question header { - padding: 0; -} - -.faq-question header a { - padding: .75em; - width: 100%; -} diff --git a/src/app/components/faq-question/faq-question.component.html b/src/app/components/faq-question/faq-question.component.html deleted file mode 100644 index 0519e61d..00000000 --- a/src/app/components/faq-question/faq-question.component.html +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/src/app/components/faq-question/faq-question.component.ts b/src/app/components/faq-question/faq-question.component.ts deleted file mode 100644 index cec0b6f5..00000000 --- a/src/app/components/faq-question/faq-question.component.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Component, Input, AfterViewInit, OnInit, OnDestroy, ViewChild } from '@angular/core'; -import {ViewEncapsulation} from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; -import { Subscription } from 'rxjs'; - -@Component({ - selector: 'app-faq-question', - templateUrl: './faq-question.component.html', - styleUrls: ['./faq-question.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class FaqQuestionComponent implements AfterViewInit, OnInit, OnDestroy { - @Input('questionId') questionId; - @ViewChild('entry') entryElement; - public isOpen: boolean = false; - private fragment: string = null; - private fragmentSub: Subscription; - private clicked: boolean = false; - - constructor(private router: Router, private route: ActivatedRoute) { - this.fragment = this.router.getCurrentNavigation().extractedUrl.fragment; - this.fragmentSub = route.fragment.subscribe(this.checkQuestionState.bind(this)); - } - - ngOnInit() { - this.checkQuestionState(this.fragment); - } - - ngOnDestroy() { - this.fragmentSub.unsubscribe(); - } - - ngAfterViewInit(){ - if (this.isOpen) { - this.entryElement.nativeElement.scrollIntoView(); - } - } - - private checkQuestionState(newFragment) { - if (this.clicked) { - this.clicked = false; - } else if (newFragment === this.questionId) { - this.isOpen = true; - if (this.entryElement) { - this.entryElement.nativeElement.scrollIntoView(); - } - } - } - - public toggleOpenEntry() { - if (!this.isOpen) { - this.router.navigate(['faq'], { fragment: this.questionId, state: { scroll: false } }); - } else { - this.router.navigate(['faq']); - } - - this.isOpen = !this.isOpen; - this.clicked = true; - } - -} diff --git a/src/app/components/faq/faq.component.css b/src/app/components/faq/faq.component.css deleted file mode 100644 index 015645a5..00000000 --- a/src/app/components/faq/faq.component.css +++ /dev/null @@ -1,21 +0,0 @@ -.faq-header .main h1 { - margin-bottom: 2rem; -} - -.faq-description { - max-width: 30rem; - text-align: center; - margin: auto; - font-size: 1.4em; -} - -.faq-contact { - max-width: 45rem; - text-align: center; - margin: auto; - margin-top: 1rem; -} - -.faq-category:not(:last-of-type) { - margin-bottom: 4rem; -} diff --git a/src/app/components/faq/faq.component.html b/src/app/components/faq/faq.component.html deleted file mode 100644 index 6677a5dd..00000000 --- a/src/app/components/faq/faq.component.html +++ /dev/null @@ -1,217 +0,0 @@ - -

Frequently asked questions

-

- Find answers to common questions about Zonemaster here. -

-

- You still don't find the information you are looking for?
- You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. -

-
- -
-

General information

- - - What is Zonemaster? - - -

Zonemaster is a software package that validates the quality of a DNS delegation.

-

The ambition of the Zonemaster project is to develop and maintain an open source DNS validation tool, offering improved performance over existing tools and providing extensive documentation which could be re-used by similar projects in the future.

- -

Zonemaster consists of several modules or components:

-
    -
  • Engine, a test framework that supports all functionality to perform DNS tests;
  • -
  • CLI, a command-line interface to the Engine;
  • -
  • Backend, a server that allows you to run Zonemaster tests and save results using a JSON-RPC API and a database;
  • -
  • GUI, a web interface to the Backend.
  • -
- -

The components will help different types of users to check domain servers for configuration errors and generate a report that will assist in fixing the errors.

-
- - - - Who is behind Zonemaster? - - -

- Zonemaster is a joint project between AFNIC, the registry of '.fr' TLD and several other TLDs like '.re', '.pm', '.tf', '.wf', '.yt' and '.paris', and The Swedish Internet Foundation, the registry of '.se' and '.nu' TLDs. -

-
- - - - How can Zonemaster help me? - - -

The Zonemaster tool could help different kind of users:

- -
    -
  • DNS administrators, experts and beginners alike, who want to check their DNS configuration;
  • -
  • users who want to know whether the domain name they own or use have any issues or not.
  • -
- -

Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name.

-
- - - - What makes Zonemaster different from other DNS zone validating software? - -
    -
  • - Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. -
  • -
  • - All tests that Zonemaster runs are defined in the Test Case Specification documents that can be found in the Test Case Specification documents. -
  • -
  • - Zonemaster can be used to test undelegated domain names. -
  • -
  • - Zonemaster can be used to test DS records before their publication in the parent zone. -
  • -
  • - This open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. -
  • -
-
- - - - How can Zonemaster distinguish between what is right and wrong? - -

- The judgement of Zonemaster is primarily based on the DNS standards as defined in RFCs. It also bases its judgement on DNS best practices, which can be more loosely defined. -

- -

- All Zonemaster tests are defined in the Test Case Specification documents in which the references to the standard documents for each test case are found. -

-

- The descriptions of message levels such as NOTICE, WARNING and ERROR are found in Severity Level Definitions. -

- -

- Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. -

-
- - - - What kind of DNS queries does Zonemaster generate? - -

- Zonemaster sends multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. -

-

- The web interface of Zonemaster does not show the queries that were sent, only the CLI interface can. If you want to see such queries, you will have to locally install a minimally working Zonemaster instance with both the Engine and CLI components. See the CLI installation document for more information, or if you prefer a Docker image is also available. -

-

- Queries sent can be shown using the 'DEBUG' level option. Fair warning, the output from the CLI can be quite heavy. For more information see CLI usage documentation. -

-
- - - - - Zonemaster and privacy - -

- Nothing besides the test domain, other test parameters and the result is stored in the database. Specifically we do not store any information that could link a test to the user who initiated it. -

-

- However, since zonemaster.net, like other public instances, is open to everyone, it is possible for anyone to test your domain and view its history of tests. -

-
-
- -
-

Using Zonemaster

- - - - How come my domain name cannot be tested? - -

- There are several possibilities. -

-
    -
  • Your domain name is not yet delegated.
  • -
  • Your domain name is not reachable from public Internet.
  • -
  • Zonemaster can only test what is called a DNS zone, for example 'zonemaster.net', and not host names, like 'www.zonemaster.net'.
  • -
  • There is a 10 minutes protection between consecutive tests for a given domain name, with same test parameters. Running a test within that window will instead show the last available test for that domain name, and parameters.
  • -
  • You have misspelled your domain name.
  • -
-
- - - - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - -

- It depends on which test failed for your domain name. Each test is accompanied with one or several messages describing the issues found. -

-

- You can also get further insight about each test from the Test Case Specification documents. -

-
- - - - - What is an undelegated domain test? - -

- An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. -

-

- This can be quite useful if one is going to migrate one's domain from one registrar to another, for example, migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. -

-

- When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. -

-
- - - - Does Zonemaster support IPv6? - -

- Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Show options" button. -

-
- - - - Does Zonemaster verify DNSSEC? - -

- Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. -

-
- - - - Can I test the DS records before they are published? - -

- Yes. Use the "Show options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. -

-
- - - - How can I test a "reverse" zone with Zonemaster? - -

- To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". -

-

Examples:

-
    -
  • for IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa;
  • -
  • for IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa.
  • -
-
-
diff --git a/src/app/components/faq/faq.component.ts b/src/app/components/faq/faq.component.ts deleted file mode 100644 index 3a7c8968..00000000 --- a/src/app/components/faq/faq.component.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Component, OnInit, AfterViewChecked, OnDestroy } from '@angular/core'; -import {ViewEncapsulation} from '@angular/core'; -import {ActivatedRoute, Router} from '@angular/router'; -import { Subscription } from 'rxjs'; -import { Title } from '@angular/platform-browser'; -import { first } from 'rxjs/operators'; - -@Component({ - selector: 'app-faq', - templateUrl: './faq.component.html', - styleUrls: ['./faq.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class FaqComponent implements OnInit { - - constructor(private titleService: Title, private route: ActivatedRoute ) { - - } - - ngOnInit() { - this.titleService.setTitle(`${$localize `:@@zm.faq.title:FAQ`} · Zonemaster`); - } -} diff --git a/src/app/components/footer/footer.component.css b/src/app/components/footer/footer.component.css deleted file mode 100644 index 4dd76cbd..00000000 --- a/src/app/components/footer/footer.component.css +++ /dev/null @@ -1,53 +0,0 @@ -footer { - background-color: var(--primary-color-lighter); - border-top: 1px solid var(--primary-color-light); - display: flex; -} - -footer .program-versions, -footer .program-versions:hover { - border: none; - background: none; - padding: 0; -} - -footer dl.version { - display: grid; - grid-template-columns: auto auto; - grid-gap: 0.25rem 0.5rem; - margin: 0; -} - -footer dl.version dt { - text-align: start; - font-weight: normal; -} - -footer dl.version dd { - text-align: end; - margin: 0; -} - -footer .copyright { - margin-top: 1rem; -} - -footer a i.fa { - margin-right: .4rem; -} - -footer nav ul { - padding: 0; - margin: 0; -} - -footer nav li { - list-style: none; -} - -.footer-logotype { - width: 100%; - max-width: 150px; - height: auto; - margin-bottom: 0.5rem; -} diff --git a/src/app/components/footer/footer.component.html b/src/app/components/footer/footer.component.html deleted file mode 100644 index 05f93854..00000000 --- a/src/app/components/footer/footer.component.html +++ /dev/null @@ -1,45 +0,0 @@ - - - -
- -
{{ item[0] }}
-
{{ item[1] }}
-
-
-
diff --git a/src/app/components/footer/footer.component.ts b/src/app/components/footer/footer.component.ts deleted file mode 100644 index 0e8705c8..00000000 --- a/src/app/components/footer/footer.component.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import {ViewEncapsulation} from '@angular/core'; -import {DnsCheckService} from '../../services/dns-check.service'; -import {AppService} from '../../services/app.service'; -import {AlertService} from '../../services/alert.service'; - -@Component({ - selector: 'app-footer', - templateUrl: './footer.component.html', - styleUrls: ['./footer.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class FooterComponent implements OnInit { - public version: string; - public versions: any[]; - public contactAddress: string; - public clientInfo: object; - public footerLogo: string; - public footerLogoAlt: string; - private nameMap = { - 'zonemaster_ldns': 'Zonemaster-LDNS', - 'zonemaster_engine': 'Zonemaster-Engine', - 'zonemaster_backend': 'Zonemaster-Backend', - } - - constructor(private dnsCheckService: DnsCheckService, private alertService: AlertService, appService: AppService) { - this.contactAddress = appService.getConfig('contactAddress'); - this.clientInfo = appService.getClientInfo(); - this.footerLogo = appService.getConfig('footerLogo'); - this.footerLogoAlt = appService.getConfig('footerLogoAlt'); - } - - ngOnInit() { - this.getAppVersion(); - } - - private getAppVersion(): void { - const self = this; - this.dnsCheckService.versionInfo().then( res => { - self.versions = this.setVersionsText(res as any[]); - }, err => { - this.alertService.error($localize `Zonemaster Backend is not available.`); - console.error(err); - }); - } - - private setVersionsText(data) { - const res = []; - for (const item in data) { - res.push([this.nameMap[item], data[item].replace('v', '')]); - } - res.push(['Zonemaster-GUI', this.clientInfo['version']]); - return res; - } -} diff --git a/src/app/components/form/form.component.css b/src/app/components/form/form.component.css deleted file mode 100644 index 58b246fc..00000000 --- a/src/app/components/form/form.component.css +++ /dev/null @@ -1,270 +0,0 @@ -/* General rules */ - -form.domain { - background-color: var(--primary-color-lighter); - border: 1px solid var(--primary-color-light); - border-radius: 1rem; - padding: 4rem; -} - - -@media(max-width:767px){ - form.domain { - padding: 1.5rem; - } -} - -.domain .is-invalid label { - color: #b51222!important; -} - -.domain .invalid-feedback { - width: 100%; - padding: 0.25rem 0.5rem; - margin-top: 0.1rem; - font-size: 0.875rem; - line-height: 1.5; - color: #fff; - background-color: #b51222; - border-radius: 0.25rem; - text-align: left; -} - -.domain .row { - --bs-gutter-x: 0.5rem; -} - - -/* Advanced options */ - -#advanced-options .form-label { - margin-bottom: 0; -} - -#advanced-options > fieldset:first-of-type { - margin-top: 1rem; -} - -#advanced-options > fieldset:last-of-type { - margin-bottom: 1rem; -} - -.domain .info-notice { - width: auto; - text-align: center; - margin: 1rem auto 0 auto; - display: flex; - align-items: center; -} - -.domain .info-notice div { - display: flex; - flex-wrap: wrap; - justify-content: center; - white-space: pre-wrap; -} - -.domain button.delete { - font-size: calc(1.5rem - 2px); - padding: .0rem .5rem; - border: none; - border: 1px solid transparent; -} - -.domain button.delete:hover { - border-color: var(--primary-color); -} - -.domain button.delete:focus-visible { - border-color: var(--primary-color); - box-shadow: 0 0 0 0.25rem var(--outline-focus-color); -} - -hr { - opacity: 1; - border-color: var(--primary-color-light); -} - -.domain .form-section fieldset { - display: flex; - gap: 0.5rem; - margin-bottom: 0.5rem; -} - -/* Advanced options responsivity */ - -@media(min-width:768px) { - /* Hide Legends and Labels from screen on wide screens but keep them for screen reader */ - .domain .form-section fieldset:not(:first-child) label, - .domain .form-section fieldset legend { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0,0,0,0); - border: 0; - } - - .domain .form-section fieldset .form-input-group > * { - flex: 1; - } - - .domain .form-section fieldset .form-input-group { - display: flex; - width: 100%; - gap: 0.5rem; - } - - .domain .form-section fieldset:first-child .form-input-group { - display: grid; - grid-auto-flow: column; - - } - - .domain .form-section.nameservers fieldset:first-child .form-input-group { - grid-template: auto auto / 1fr 1fr; - } - - .domain .form-section.ds-records fieldset:first-child .form-input-group { - grid-template: auto auto / 1fr 1fr 1fr 1fr; - } - - .domain .form-section fieldset:first-child .delete-button-container { - margin-top: 2.2rem; - display: flex; - align-items: baseline; - } -} - -@media(max-width:767px) { - .domain .form-section fieldset legend { - font-size: 1.1em; - margin-bottom: 0; - } - - .domain .form-section fieldset { - flex-direction: column; - position: relative; - margin-bottom: 1rem; - } - - .domain .form-section fieldset:not(:last-child)::after { - content: ''; - display: block; - height: 1px; - width: 50%; - margin: auto; - margin-top: 1rem; - background: var(--primary-color-light); - } - - .domain .form-section fieldset .form-input-group { - display: grid; - grid: auto / auto 1fr; - gap: 0.5rem; - } - - .domain .form-section fieldset .delete-button-container { - position: absolute; - top: -.25rem; - right: 0; - } -} - -/* Advanced option switch */ - -.domain .switch-input-container { - display: flex; - align-items: center; -} - -.domain .switch-input-container label { - margin: 0; -} - -.domain summary#advanced-toggle { - font-weight: bold; - list-style-type: none; -} - -.domain summary#advanced-toggle i { - margin-right: .5em; -} - -.domain details#advanced-options summary#advanced-toggle .opened-label { - display: none; -} - -.domain details#advanced-options[open] summary#advanced-toggle .opened-label { - display: initial; -} - -.domain details#advanced-options[open] summary#advanced-toggle .closed-label { - display: none; -} - -/* Domain input */ -.domain .domain-input-container { - position: relative; - flex: 1; -} - -.domain .domain-form-container > label { - font-size: 1.25rem; -} - -.domain .advanced { - margin: 0.5em 0; -} - -.domain .reset-form { - position: absolute; - top: calc(0.5em); - z-index: 100; - right: 0.5rem; -} - -.domain .reset-form button { - color: white; - padding: 0; - border-radius: 1em; - height: 2em; - width: 2em; - border: .2em solid white; - background-color: #939393; - display: flex; - justify-content: center; - align-items: center; -} - -.domain .reset-form button:not(:disabled):hover, -.domain .reset-form button:not(:disabled):focus { - background-color: rgb(48, 48, 48); -} - -.domain .reset-form button i { - font-size: 1.3em; -} - -.domain .progress-value { - display: block; - color: #000; - position: absolute; - right: 1rem; - font-size: 2rem; -} - -.domain .progress-result { - width: 100%; - height:100%; - position: absolute; - z-index: 20; - top: 0; -} - -.domain .progress-result .progress { - height: 100%; - opacity: .3; -} diff --git a/src/app/components/form/form.component.html b/src/app/components/form/form.component.html deleted file mode 100644 index 5362efb3..00000000 --- a/src/app/components/form/form.component.html +++ /dev/null @@ -1,339 +0,0 @@ -
-
- -
- -
Domain name required
- -
- {{ domain.errors.serverError }} -
- -
- -
- -
- - {{formProgression}}% - -
-
-
-
-
- - - Show options - Hide options - - - - -
- Nameservers - -
-
- Nameserver #{{ i + 1}} -
- -
- -
- {{ nameserver.controls.ns.errors.serverError }} -
-
- The name of nameserver is required -
-
- - -
- -
- {{ nameserver.controls.ip.errors.serverError }} -
-
-
- -
- -
-
- -
-
- -
-
- -
- -
- DS records -
-
- DS record #{{ i + 1}} -
- -
- -
- {{ ds_info.controls.keytag.errors.serverError }} -
-
- Keytag required -
-
- The keytag must be a positive integer between 0 and 65535 -
-
- - -
- -
- {{ ds_info.controls.algorithm.errors.serverError }} -
-
- Algorithm required -
-
- - -
- -
- {{ ds_info.controls.digtype.errors.serverError }} -
-
- Digest type required -
-
- - -
- -
- {{ ds_info.controls.digest.errors.serverError }} -
-
- Digest required -
-
-
- -
- -
- -
-
-
- -
-
- -
- -
- General -
-
- Protocol -
-
- - -
-
- - -
-
-
- Cannot disable both IPv4 and IPv6 -
-
- - -
-
-
- -
-
- -
- {{ form.controls.profile.errors.serverError }} -
-
-
-
-
-
- -
-
- -
-
- -
-
-
-
- -
-
-
diff --git a/src/app/components/form/form.component.ts b/src/app/components/form/form.component.ts deleted file mode 100644 index f0fe930c..00000000 --- a/src/app/components/form/form.component.ts +++ /dev/null @@ -1,381 +0,0 @@ -import {Component, EventEmitter, OnInit, Input, Output, OnChanges, SimpleChange, OnDestroy, ViewChild, ElementRef } from '@angular/core'; -import {ViewEncapsulation} from '@angular/core'; -import { - FormGroup, - FormControl, - FormArray, - FormBuilder, - Validators, - AbstractControl} from '@angular/forms'; -import { Title } from '@angular/platform-browser'; -import { ActivatedRoute, Params } from '@angular/router'; -import { Subscription } from 'rxjs'; -import { AlertService } from '../../services/alert.service'; - - -@Component({ - selector: 'app-form', - templateUrl: './form.component.html', - styleUrls: ['./form.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class FormComponent implements OnInit, OnChanges, OnDestroy { - @ViewChild('domainInput') domainInputView!: ElementRef; - @ViewChild('nameserversForm') nameserversFormView!: ElementRef; - @ViewChild('dsInfoForm') dsInfoFormView!: ElementRef; - - @Input() formProgression; - @Input() toggleFinished; - @Input() profiles; - - @Output() onRunTest = new EventEmitter(); - @Output() onFetchDataFromParent = new EventEmitter<[string, string]>(); - - private groupWithSubscription = new WeakSet(); - - private formConfig = { - 'nameservers': { - ns: '', - ip: '' - }, - 'ds_info': { - keytag: '', - algorithm: '', - digtype: '', - digest: '' - } - }; - - private formOpts = { - 'ds_info': { - validators: FormComponent.allOrNoneDSFieldsValidator - }, - 'nameservers': { - validators: FormComponent.nsRequiredValidator - } - }; - - private _showProgressBar: boolean; - - private routeParamsSubscription: Subscription; - - public history = {}; - public test = {}; - public disable_check_button = false; - public form: FormGroup; - - constructor(private activatedRoute: ActivatedRoute, - private formBuilder: FormBuilder, - private titleService: Title, - private alertService: AlertService) { - } - - ngOnInit() { - this.titleService.setTitle('Zonemaster'); - this.generateForm(); - - this.routeParamsSubscription = this.activatedRoute.params.subscribe((params: Params) => { - if ( params['domain'] ) { - let domainName: string = params['domain']; - this.form.controls.domain.setValue(domainName); - this.submitRunTest(); - } - }); - } - - ngOnChanges(changes: { [property: string]: SimpleChange }) { - if ('toggleFinished' in changes) { - this.resetFullForm(); - } - } - - ngOnDestroy() { - this.routeParamsSubscription.unsubscribe(); - } - - get nameserversArray() { - return this.form.get('nameservers') as FormArray; - } - - get dsInfoArray() { - return this.form.get('ds_info') as FormArray; - } - - private static atLeastOneProtocolValidator(control: AbstractControl) { - const ipv4_disabled = control.get('disable_ipv4'); - const ipv6_disabled = control.get('disable_ipv6'); - return (ipv4_disabled && ipv4_disabled.value === true) && (ipv6_disabled && ipv6_disabled.value === true) ? { - noProtocol: true - } : null; - }; - - private static allOrNoneDSFieldsValidator(control: AbstractControl) { - const keytag = control.get('keytag'); - const algorithm = control.get('algorithm'); - const digest = control.get('digest'); - const digtype = control.get('digtype'); - - if (keytag.value || digest.value || algorithm.value || digtype.value ) { - if (!keytag.value) keytag.setErrors({required: true}); - if (!digest.value) digest.setErrors({required: true}); - if (!algorithm.value) algorithm.setErrors({required: true}); - if (!digtype.value) digtype.setErrors({required: true}); - } else { // reset errors on children - keytag.setErrors(null); - digest.setErrors(null); - algorithm.setErrors(null); - digtype.setErrors(null); - control.markAsUntouched(); - control.markAsPristine(); - } - - return null; - }; - - private static nsRequiredValidator(control: AbstractControl) { - const ns = control.get('ns'); - const ip = control.get('ip'); - if (ip.value && !ns.value) { - return ns.setErrors({ required: true }); - } else if (!ip.value && !ns.value) { // reset errros on children - ns.setErrors(null); - control.markAsUntouched(); - control.markAsPristine(); - } - return null; - }; - - private generateFormRunTest() { - this.form = new FormGroup({ - domain: new FormControl('', Validators.required), - disable_ipv4: new FormControl(false), - disable_ipv6: new FormControl(false), - profile: new FormControl(this.profiles[0] || 'default'), - nameservers: new FormArray([]), - ds_info: new FormArray([]), - }, { - validators: FormComponent.atLeastOneProtocolValidator - }); - - this.addNewRow('nameservers'); - this.addNewRow('ds_info'); - } - - public generateForm() { - this.generateFormRunTest(); - } - - get domain() { return this.form.get('domain'); } - - @Input() - set parentDataDS(dsList) { - this.setParentData(dsList, 'ds_info'); - } - - @Input() - set parentDataNS(nsList) { - this.setParentData(nsList, 'nameservers'); - } - - private setParentData(dataList: Array, formName: string) { - if (this.form) { - this.disableForm(false); - - this.deleteRow(formName, -1); - if (dataList.length == 0) { - this.addNewRow(formName); - this.alertService.warn($localize `No data found for the zone.`); - } else { - dataList.forEach(row => { - this.addNewRow(formName, row); - }); - this.alertService.success($localize `Parent data fetched with success.`); - } - this.addNewRow(formName); - - } - } - - @Input() - set formError(errors: Array) { - if (!errors) { - return; - } - - this.disableForm(false); - - for (let error of errors) { - let path = error.path.split('/'); - path.shift(); // First element is "" - let currentForm: AbstractControl = this.form; - for (let segment of path) { - currentForm = currentForm.get(segment); - } - currentForm.setErrors({'serverError': error.message}) - } - - this.focusFirstError(); - } - - @Input() - set showProgressBar(show: boolean) { - this._showProgressBar = show; - if (!this.form) return; - this.disableForm(show); - } - - get showProgressBar() { - return this._showProgressBar; - } - - public resetForm() { - this.form.controls.domain.reset(''); - this.domainInputView.nativeElement.focus(); - } - - public resetFullForm() { - this.generateForm(); - } - - public addNewRow(formName, value = null) { - const control = this.form.get(formName); - const isPrefilled = value !== null; - if (!isPrefilled) { - value = this.formConfig[formName]; - } - - const group = this.formBuilder.group(value, this.formOpts[formName]); - - if (!isPrefilled) { - this.addRowIfFormChange(group, formName); - } else { - group.markAsDirty(); - } - - control.push(group); - } - - public deleteRow(formName, index: number) { - const control = this.form.get(formName); - if (index === -1) { - for ( let i = control.length - 1; i >= 0; i--) { - control.removeAt(i); - } - } else { - const formElement = formName === 'nameservers' ? - this.nameserversFormView.nativeElement : - this.dsInfoFormView.nativeElement; - - if (control.length === 1 || (index === control.length - 1 && !control.at(index - 1).pristine)) { - control.at(index).reset(); - } else { - control.removeAt(index); - - const buttons = formElement.querySelectorAll('button.delete'); - - if (index < buttons.length - 1) { - buttons[index + 1].focus(); - } else { - buttons[index - 1].focus(); - } - } - - this.addRowIfFormChange(control.at(control.length - 1), formName); - } - - return false; - } - - private addRowIfFormChange(group, formName) { - if (group.pristine && !this.groupWithSubscription.has(group)) { - const valueChangesSubscription = group.valueChanges.subscribe((e) => { - if (group.pristine === false) { - this.addNewRow(formName); - valueChangesSubscription.unsubscribe(); - this.groupWithSubscription.delete(group); - } - }); - - // Avoid subscribing the event multiple times - this.groupWithSubscription.add(group); - } - } - - public fetchDataFromParent(type) { - this.domain.markAsTouched(); - if (this.domain.invalid) { - return false; - } - this.disableForm(); - - this.onFetchDataFromParent.emit([type, this.form.value.domain]); - } - - public disableForm(disable = true) { - if (disable) { - this.form.disable(); - } else { - this.form.enable(); - } - } - - // Remove trailing spaces and dots, and leading spaces - private sanitizeDomain(domain: string): string { - domain = domain.trim(); - if (domain == '.') { - return domain; - } else { - return domain.replace(/\.$/, ''); - } - } - - private focusFirstError() { - // small hack to execute this at the next tick when DOM has been updated - window.setTimeout(() => document.querySelector('[aria-invalid="true"]').focus(), 0) - } - - private submitRunTest() { - this.form.markAllAsTouched(); - this.form.controls.domain.markAsDirty(); - let param = this.form.value; - - param.domain = this.sanitizeDomain(param.domain); - - if (param.ipv4 === true) delete param.ipv4; - - if (param.disable_ipv4) param.ipv4 = false; - if (param.disable_ipv6) param.ipv6 = false; - delete param.disable_ipv4; - delete param.disable_ipv6; - - param.nameservers = param.nameservers - .map((x, i) => { - x.ns = this.sanitizeDomain(x.ns); - if (!x.ip) { - delete x.ip; - } - return x; - }) - .filter(ns => ns.ip || ns.ns); - - param.ds_info = param.ds_info - .filter(ds => ds.keytag || ds.algorithm > 0 || ds.digtype > 0 || ds.digest) - .map(ds => {return { - keytag: Number(ds.keytag), - algorithm: Number(ds.algorithm), - digtype: Number(ds.digtype), - digest: ds.digest - }}); - - if (this.form.valid) { - this.onRunTest.emit(param); - } else { - this.focusFirstError(); - } - } - - public submitForm() { - console.log('submited') - this.submitRunTest(); - } -} diff --git a/src/app/components/header/header.component.css b/src/app/components/header/header.component.css deleted file mode 100644 index 9a30183c..00000000 --- a/src/app/components/header/header.component.css +++ /dev/null @@ -1,10 +0,0 @@ -app-header { - margin-bottom: 4rem; - display: block; -} - -app-header h1 { - text-align: center; - margin-bottom: 4rem; - font-size: 3rem; -} diff --git a/src/app/components/header/header.component.html b/src/app/components/header/header.component.html deleted file mode 100644 index 13ae88fa..00000000 --- a/src/app/components/header/header.component.html +++ /dev/null @@ -1,3 +0,0 @@ -
- -
diff --git a/src/app/components/header/header.component.ts b/src/app/components/header/header.component.ts deleted file mode 100644 index 71e0296c..00000000 --- a/src/app/components/header/header.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component } from '@angular/core'; -import { ViewEncapsulation } from '@angular/core'; - -@Component({ - selector: 'app-header', - templateUrl: './header.component.html', - styleUrls: ['./header.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class HeaderComponent { -} diff --git a/src/app/components/history/history.component.html b/src/app/components/history/history.component.html deleted file mode 100644 index ac7bbe43..00000000 --- a/src/app/components/history/history.component.html +++ /dev/null @@ -1,48 +0,0 @@ -
-
-
- - - -
-
- - - - - -
- - -

Results from previous tests are not available.

-
diff --git a/src/app/components/history/history.component.ts b/src/app/components/history/history.component.ts deleted file mode 100644 index 8d7a4c64..00000000 --- a/src/app/components/history/history.component.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import {ViewEncapsulation} from '@angular/core'; -import {DnsCheckService} from '../../services/dns-check.service'; -import {AlertService} from '../../services/alert.service'; - - -@Component({ - selector: 'app-history', - templateUrl: './history.component.html', - styleUrls: ['./history.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class HistoryComponent implements OnInit { - - @Input() history: any[]; - @Output() onTestClicked: EventEmitter = new EventEmitter(); - - public page = 1; - public pageSize = 10; - - public historyItems: any[] = []; - public filter = 'all'; - public filteredHistory: any[] = []; - - constructor(private alertService: AlertService, private dnsCheckService: DnsCheckService) { } - - ngOnInit() { - this.history = this.setColor(this.history); - this.filterHistory(this.filter); - this.setItemsByPage(this.page); - } - - setColor(data) { - return data.map(item => { - if (['critical', 'error'].includes(item.overall_result)) { - item.color = 'danger'; - } else if ('warning' === item.overall_result) { - item.color = 'warning'; - } else if ('ok' === item.overall_result) { - item.color = 'success'; - } - item.local_creation_time = new Date(item.created_at); - return item; - }); - } - - public setItemsByPage(page: number) { - // TODO rename function - this.historyItems = this.filteredHistory.slice( (page - 1) * this.pageSize, page * this.pageSize ); - } - - public filterHistory(value) { - this.filter = value; - this.filteredHistory = this.history.filter(test => { - return (this.filter == 'all') || (test.undelegated == (this.filter == 'undelegated')); - }); - this.setItemsByPage(this.page); - } - -} diff --git a/src/app/components/message-banner/message-banner.component.css b/src/app/components/message-banner/message-banner.component.css deleted file mode 100644 index d43b5f97..00000000 --- a/src/app/components/message-banner/message-banner.component.css +++ /dev/null @@ -1,17 +0,0 @@ -.message-banner { - text-align: center; - background: var(--primary-color); - color: #fff; - display: flex; - flex-direction: column; -} - -.message-banner p { - margin: .75rem 0; -} - -.message-banner a, -.message-banner a:hover { - color: #fff; - font-weight: bold; -} diff --git a/src/app/components/message-banner/message-banner.component.html b/src/app/components/message-banner/message-banner.component.html deleted file mode 100644 index 2b64ad82..00000000 --- a/src/app/components/message-banner/message-banner.component.html +++ /dev/null @@ -1,3 +0,0 @@ -
-

-
diff --git a/src/app/components/message-banner/message-banner.component.ts b/src/app/components/message-banner/message-banner.component.ts deleted file mode 100644 index 32a9ad58..00000000 --- a/src/app/components/message-banner/message-banner.component.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Component } from '@angular/core'; -import { ViewEncapsulation } from '@angular/core'; -import { AppService } from '../../services/app.service'; - -@Component({ - selector: 'app-message-banner', - templateUrl: './message-banner.component.html', - styleUrls: ['./message-banner.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class MessageBannerComponent { - public msgBanner: string; - - constructor(appService: AppService) { - this.msgBanner = appService.getConfig('msgBanner') || ''; - } - -} diff --git a/src/app/components/navigation/navigation.component.css b/src/app/components/navigation/navigation.component.css deleted file mode 100644 index e90701eb..00000000 --- a/src/app/components/navigation/navigation.component.css +++ /dev/null @@ -1,91 +0,0 @@ -app-navigation nav { - background-color: var(--primary-color-lighter); - border-bottom: 1px solid var(--primary-color-light); -} - -app-navigation .logo { - height: 4rem; - image-rendering: -webkit-optimize-contrast; - transition: 0.2s linear height; - padding: 0.5rem; -} - -app-navigation #navBar a.active { - font-weight: bold; -} - -app-navigation .navbar-brand div { - height: 100%; -} - -app-navigation .lang { - display: inline-flex; - align-items: center; -} - -app-navigation .lang .icon { - width: 1em; - line-height: 1em; - margin: 0 .2em; - font-size: 1.5em; -} - -#languageSelection { - width: auto; -} - -@media(min-width: 768px) { - app-navigation .navbar { - padding: 0; - } - - app-navigation .navbar > .container { - height: 100%; - } - - app-navigation #navBar { - align-self: end; - height: 100%; - align-items: end; - } - - app-navigation #navBar div.lang, - app-navigation #navBar a { - padding-bottom: 1.15rem; - } - - app-navigation .navbar-brand, - app-navigation #navBar a { - margin-right: 1.5rem; - } - - app-navigation #navBar a { - border-bottom: .3rem solid transparent; - } - - app-navigation #navBar a:focus, - app-navigation #navBar a:hover, - app-navigation #navBar a.active { - border-bottom: .3rem solid var(--primary-color-light); - } -} - -@media(max-width: 991px) { - app-navigation .logo { - height: 3rem; - } - - app-navigation #navBar div.lang, - app-navigation #navBar a { - padding-bottom: .65rem; - } - -} - -.back-to-top { - cursor: pointer; - position: fixed; - bottom: 20px; - right: 20px; - z-index: 5; -} diff --git a/src/app/components/navigation/navigation.component.html b/src/app/components/navigation/navigation.component.html deleted file mode 100644 index eb13e18f..00000000 --- a/src/app/components/navigation/navigation.component.html +++ /dev/null @@ -1,41 +0,0 @@ -
- -
- diff --git a/src/app/components/navigation/navigation.component.ts b/src/app/components/navigation/navigation.component.ts deleted file mode 100644 index fa9bae59..00000000 --- a/src/app/components/navigation/navigation.component.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { Component, OnInit, NgZone, AfterViewInit, ViewChild, ElementRef, LOCALE_ID, Inject} from '@angular/core'; -import {ViewEncapsulation} from '@angular/core'; -import { NavigationService } from '../../services/navigation.service'; -import { AppService } from '../../services/app.service'; -import { NavigationEnd, Router } from '@angular/router'; -import { PlatformLocation } from '@angular/common'; -import { filter, take } from "rxjs/internal/operators"; - -@Component({ - selector: 'app-navigation', - templateUrl: './navigation.component.html', - styleUrls: ['./navigation.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class NavigationComponent { - public logoUrl: string; - public isNavbarCollapsed = true; - public isShrunk = false; - public activeBackToTop = false; - public lang: string; - public enabledLanguages = []; - public languages = {}; - private baseUrl = ''; - - @ViewChild('navView', {static: false}) navView: ElementRef; - - constructor(appService: AppService, - private router: Router, - platformLocation: PlatformLocation, - @Inject(LOCALE_ID) private language: string) { - this.enabledLanguages = appService.getConfig('enabledLanguages').sort(); - this.languages = appService.getConfig('languages'); - this.baseUrl = platformLocation.getBaseHrefFromDOM(); - - this.logoUrl = appService.getConfig('logoUrl'); - - this.router.events - .pipe(filter(event => event instanceof NavigationEnd)) - .pipe(take(1)) - .subscribe((event) => { - // Wait for navigation to end before setting language - this.lang = localStorage.getItem('lang'); - - if (this.isValidLanguage(this.lang)) { - this.setLanguage(this.lang); - } else { - this.setLanguage(this.language); - } - }); - } - - public backToTop() { - window.scrollTo(0, 0); - } - - public setLanguage(lang: string) { - console.log(this.baseUrl, this.router.url); - this.lang = lang; - localStorage.setItem('lang', lang); - - if (this.language != lang) { - // TODO: redirect to stored language if different than current language - - const base = new URL(window.origin + this.baseUrl); - const target = new URL(`../${lang}${this.router.url}`.replace(/\/+$/, ''), base); - window.location.href = target.href; - } - } - - private isValidLanguage(lang: string) { - return this.enabledLanguages.includes(lang); - } -} diff --git a/src/app/components/page-not-found/page-not-found.component.css b/src/app/components/page-not-found/page-not-found.component.css deleted file mode 100644 index e69de29b..00000000 diff --git a/src/app/components/page-not-found/page-not-found.component.html b/src/app/components/page-not-found/page-not-found.component.html deleted file mode 100644 index a329ee74..00000000 --- a/src/app/components/page-not-found/page-not-found.component.html +++ /dev/null @@ -1,7 +0,0 @@ - -

Error 404

-
-
-

Page Not Found

-

Sorry, there is nothing here!

-
diff --git a/src/app/components/page-not-found/page-not-found.component.ts b/src/app/components/page-not-found/page-not-found.component.ts deleted file mode 100644 index c95497dc..00000000 --- a/src/app/components/page-not-found/page-not-found.component.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import {ViewEncapsulation} from '@angular/core'; - -@Component({ - selector: 'app-page-not-found', - templateUrl: './page-not-found.component.html', - styleUrls: ['./page-not-found.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class PageNotFoundComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/src/app/components/result/result.component.css b/src/app/components/result/result.component.css deleted file mode 100644 index 70f39409..00000000 --- a/src/app/components/result/result.component.css +++ /dev/null @@ -1,400 +0,0 @@ -.result { - --result-info-color: #157347; - --result-info-bg: var(--result-info-color); - --result-notice-color: #1069c8; - --result-notice-bg: var(--result-notice-color); - --result-warning-color: #ae5a01; - --result-warning-bg: #ff9019; - --result-error-color: #bb2d3b; - --result-error-bg: var(--result-error-color); - --result-critical-color: var(--result-error-color); - --result-critical-bg: var(--result-error-color); - width: 80%; - margin: auto; -} - -@media(max-width:991px) { - .result { - width: 100%; - } -} - -.result section.testcase header.info { - color: var(--result-info-color); -} - -.result section.testcase header.notice { - color: var(--result-notice-color); -} - -.result section.testcase header.warning { - color: var(--result-warning-color); -} - -.result section.testcase header.error { - color: var(--result-error-color); -} - -.result section.testcase header.critical { - color: var(--result-critical-color); -} - -.result section.testcase header button > i.fa { - margin-right: 3rem; - margin-top: 0.1rem; - width: 1rem; -} - -.result section.testcase h4 { - font-size: 1.1rem; - display: inline-block; - margin: 0; -} - -.result section.testcase h4 .testcase-name i { - width: 1rem; - display: inline-block; - text-align: center; - margin-left: -1.3rem ; - margin-right: 0.3rem; -} - -.result section.testcase h4 button { - background: none; - border: none; - color: inherit; - padding: 0; - text-align: left; - display: flex; -} - -.result section.testcase header { - display: flex; - align-items: flex-start; -} - -.result section.testcase header h4 { - display: flex; - cursor: pointer; - margin: 0.25rem 0; -} -.result section.testcase header .test-case-id { - display: inline-block; - background-color: #d3eeff; - color: #555454; - margin-left: 1em; - font-size: 0.9em; - padding: 0.15em 0.4em; - white-space: nowrap; -} - -.result section.testcase ul li .level { - display: inline; - padding: 0.2em 0.3em; - border-radius: 0.3em; - font-size: 0.8em; - margin-right: 0.5em; - text-transform: uppercase; -} - -.result .filters .active.all { - background-color: #c4c4c4; -} - -.result .filters .active input { - mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); -} - -.result .filters .active.info input, -.result .filters .active.notice input, -.result .filters .active.error input, -.result .filters .active.critical input { - background: white; -} - -.result .filters .active.all input, -.result .filters .active.warning input { - background: black; -} - -.result .badge.info, -.result .filters .active.info, -.result section.testcase ul li .level.info { - background-color: var(--result-info-bg); - color: white; -} - -.result .badge.notice, -.result .filters .active.notice, -.result section.testcase ul li .level.notice { - background: var(--result-notice-bg); - color: white; -} - -.result .badge.warning, -.result .filters .active.warning, -.result section.testcase ul li .level.warning { - background: var(--result-warning-bg); - color: black; -} - -.result .badge.error, -.result .filters .active.error, -.result section.testcase ul li .level.error { - background: var(--result-error-bg);; - color: white; -} - -.result .badge.critical, -.result .filters .active.critical, -.result section.testcase ul li .level.critical { - background: var(--result-critical-bg);; - color: white; -} - -.result section.testcase li { - list-style: none; - display: flex; - margin-bottom: .2em; -} - -.result section.testcase li p { - word-break: normal; - overflow-wrap: anywhere; - margin: 0; -} - -.result section.testcase ul { - padding-left: 3.7em; - margin-bottom: .8em; -} - -.result .collapsed { - display: none!important; -} - -.result section.module h3 { - margin-bottom: 0; - font-size: 1.4rem; -} -.result section.module h3 button { - display: flex; - align-items: center; - cursor: pointer; - width: 100%; - background: none; - border: none; - padding: 0; - color: inherit; -} - -.result section.module h3 .module-name { - margin-right: 1rem; -} - -.result section.module h3 .badge { - margin-right: 0.5rem; - font-size: .6em; -} - -.result section.module h3 .badge i { - width: 1em; -} - -.result section.module.expanded h3 { - margin-bottom: 0.5rem; -} - -.result section.module h3 i.caret { - transform: rotate(0); - transition: 0.1s transform; - display: inline-block; - width: 1em; -} - -.result section.module.expanded h3 i.caret { - transform: rotate(90deg); -} - -.result section.details > section.module { - background: #f7f7f7; - padding: 0.5rem; - margin-bottom: 1rem; -} - -#link_location { - width: 100%; -} - -.result .modal-title { - color: #000; -} - -.result .vertical-align { - display: flex; - align-items: center; -} - -.result .search { - flex: 1; - min-width: 300px; -} - -.result .nav-link { - cursor: pointer; - color: inherit; -} - -.result .dropdown-body { - position: relative; - padding: 1rem; - white-space: nowrap; -} - -.result button.share + .dropdown-menu .dropdown-body { - min-width: calc(min(420px, 100vw - 2rem)); - display: flex; -} - -.result button.btn-clipboard:hover { - border: 1px solid #cdc7c2; -} - -.result button.btn-clipboard > i.fa-check { - color: #157347; -} - -.result button.btn-clipboard > i.fa-remove { - color: #bb2d3b; -} - -.result .badge { - --bs-badge-font-size: .8em; -} - -.result .actions-btn { - flex-grow: 1; - display: flex; - justify-content: flex-end; - gap: .25rem; -} - -.result .filters { - margin-top: 1rem; -} - -.result .filters .severity-levels { - margin: .75rem 0; -} - -.result .filters .severity-levels legend { - font-size: inherit; -} - -.result .filters .severity-level-inputs { - display: flex; - flex-wrap: wrap; -} - -.result .filters .severity-level-inputs label { - padding: 0.3em; - border-radius: 0.5rem; - border: 0.2em solid transparent; -} - -.result .filters .severity-level-inputs label:focus-within { - border-color: white; - box-shadow: 0 0 0 0.2rem var(--outline-focus-color) -} - -.result .filters .severity-level-inputs label:focus-within input[type=checkbox] { - box-shadow: none; - border-color: rgba(0, 0, 0, 0.25); -} - -.result .filters .severity-level-inputs .form-check-inline { - padding-left: 0; -} -.result .filters .severity-level-inputs input[type=checkbox] { - float: none; - margin-left: auto; - margin-right: .5em; -} - -.result .filters #severity-level-help dl { - display: grid; - grid: auto-flow / 1fr auto; - grid-gap: .4rem; -} - -.result .actions-btn > button > i.fa, -.result .actions-btn > div > button > i.fa { - margin-right: 0.25rem; -} - -.result .result-metadata { - display: flex; - align-items: center; - flex-wrap: wrap; -} - -.result .result-metadata .result-test-datetime { - margin: 0; -} - -.result .result-control-buttons { - align-items: flex-end; - display: flex; - gap: 0.4rem; - margin-top: 0.4rem; -} - -@media(min-width:1400px) { - .result .filters .severity-level-inputs { - gap: 1rem; - } -} - -@media(max-width:767px){ - .result .actions-btn { - width: 100%; - display: flex; - justify-content: space-between; - flex-wrap: wrap; - } - - .result .actions-btn > *, - .result .actions-btn > div > button { - flex-grow: 1; - } - - .result .actions-btn > div { - display: flex!important; - } - - .result section.testcase header { - flex-wrap: wrap; - } - - .result section.testcase header .test-case-id { - margin-left: 1.2rem; - margin-bottom: .75rem; - } - - .result section.testcase header button > i.fa { - margin-right: 1.5rem; - } - - .result section.testcase ul { - padding-left: 1.2em; - } -} - -@media(max-width:991px) { - .result .filters > ul { - flex-grow: 1; - display: flex; - flex-wrap: wrap; - justify-content: space-evenly; - } -} diff --git a/src/app/components/result/result.component.html b/src/app/components/result/result.component.html deleted file mode 100644 index 6cda857e..00000000 --- a/src/app/components/result/result.component.html +++ /dev/null @@ -1,234 +0,0 @@ - -

Result

- -

Test another domain

-
-
- -
-
-
-

- Test result for - {{ unicodeDomain }} - ({{ asciiDomain }}) -

- -
- - - -
- -
-
- Filter severity levels - - -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
- -
- - - - What is the meaning of the severity levels? - -
-
Info
-
- The message is something that may be of interest to the zone's administrator - but that definitely does not indicate a problem. -
-
Notice
-
- The message means something that should be known by the zone's administrator - but that need not necessarily be a problem at all. -
-
Warning
-
- The message means something that will under some circumstances be a problem, - but that is unlikely to be noticed by a casual user. -
-
Error
-
- The message means a problem that is very likely (or possibly certain) to - negatively affect the function of the zone being tested, but not so - severe that the entire zone becomes unresolvable. -
-
Critical
-
- The message means a very serious error. -
-
-
- -
-
- - -
-
- - -
-
-
- -
-
-

- -

-
-
-
-

- -

- - {{testcase.id}} - -
-
-
    -
  • {{ severityLevelNames[entry.level] }}

    {{entry.message}}

  • -
-
-
-
-
-
-
- - - - - diff --git a/src/app/components/result/result.component.ts b/src/app/components/result/result.component.ts deleted file mode 100644 index 05039e0c..00000000 --- a/src/app/components/result/result.component.ts +++ /dev/null @@ -1,535 +0,0 @@ -import { Component, OnInit, Input, ElementRef, ViewChild, OnDestroy, Inject, LOCALE_ID } from '@angular/core'; -import {ViewEncapsulation} from '@angular/core'; -import { ActivatedRoute, Params, Router } from '@angular/router'; -import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; -import { saveAs } from 'file-saver'; -import { Subscription } from 'rxjs'; -import { DnsCheckService } from '../../services/dns-check.service'; -import { AlertService } from '../../services/alert.service'; -import { NavigationService } from '../../services/navigation.service'; -import { formatDate, Location } from '@angular/common'; -import { Title } from '@angular/platform-browser'; -import * as punycode from 'punycode/'; - -@Component({ - selector: 'app-result', - templateUrl: './result.component.html', - styleUrls: ['./result.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class ResultComponent implements OnInit, OnDestroy { - - @Input('testId') testId: string; - @ViewChild('resultView', {static: false}) resultView: ElementRef; - @ViewChild('historyModal', {static: false}) historyModal: ElementRef; - @ViewChild('resultSectionHeading', {static: false}) resultSectionHeading: ElementRef; - - public displayForm = false; - public form = {ipv4: true, ipv6: true, profile: 'default_profile', domain: ''}; - public unicodeDomain = ''; - public asciiDomain = ''; - public result = []; - public modules: any; - public severity_icons = { - 'info': 'fa-check', - 'notice': 'fa-exclamation', - 'warning': 'fa-exclamation-triangle', - 'error': 'fa-times-circle', - 'critical': 'fa-times-circle' - }; - public severityLevelNames = { - 'info': $localize `Info`, - 'notice': $localize `Notice`, - 'warning': $localize `Warning`, - 'error': $localize `Error`, - 'critical': $localize `Critical`, - }; - public moduleNames = { - 'system': $localize `System`, - 'basic': $localize `Basic`, - 'address': $localize `Address`, - 'connectivity': $localize `Connectivity`, - 'consistency': $localize `Consistency`, - 'delegation': $localize `Delegation`, - 'dnssec': $localize `DNSSEC`, - 'nameserver': $localize `Nameserver`, - 'syntax': $localize `Syntax`, - 'zone': $localize `Zone`, - }; - public searchQueryLength = 0; - public test: any = {params: {ipv4: false, ipv6: false}}; - public isCollapsed = []; - public testCasesCount = { - all: 0, - info: 0, - notice: 0, - warning: 0, - error: 0, - critical: 0, - }; - public testCasesCountByModule = {}; - public resultFilter = { - all: true, - info: false, - notice: false, - warning: false, - error: false, - critical: false, - search: '' - }; - public severityLevels = { - info: 0, - notice: 1, - warning: 2, - error: 3, - critical: 4, - }; - public testCaseDescriptions = {}; - public historyQuery: object; - public history: any[]; - public navHeight: Number; - private header = ['Module', 'Level', 'Message']; - private navHeightSubscription: Subscription; - - private routeParamsSubscription: Subscription; - - constructor(private activatedRoute: ActivatedRoute, - private router: Router, - private modalService: NgbModal, - private alertService: AlertService, - private dnsCheckService: DnsCheckService, - private navigationService: NavigationService, - private location: Location, - private titleService: Title, - @Inject(LOCALE_ID) private language: string) { - - let data = this.router.getCurrentNavigation().extras.state || {}; - this.displayForm = data.displayForm === undefined ? false : data.displayForm; - } - - ngOnInit() { - this.routeParamsSubscription = this.activatedRoute.params.subscribe((params: Params) => { - this.testId = params['testId']; - this.fetchResult(this.testId); - }); - - this.navHeightSubscription = this.navigationService.height.subscribe((newHeight: Number) => { - this.navHeight = newHeight; - }); - } - - ngOnDestroy() { - this.navHeightSubscription.unsubscribe(); - - if (this.routeParamsSubscription) { - this.routeParamsSubscription.unsubscribe(); - } - } - - public openModal(content) { - this.modalService.open(content).result.then((result) => { - console.log(result); - // NOTE: this is a hack, I don't like it. - // angular-bootstrap move the focus back to the history button, we move it to the result section at next tick - window.setTimeout(() => this.resultSectionHeading.nativeElement.focus(), 0); - }, (reason) => { - console.log(reason); - }); - } - - public expandAll() { - for (const module of this.modules) { - this.isCollapsed[module.name] = false; - } - } - - public collapseAll() { - for (const module of this.modules) { - this.isCollapsed[module.name] = true; - } - } - - private fetchResult(testId: string, resetCollapsed = true) { - this.dnsCheckService.getTestResults(testId).then(data => { - // TODO clean - - this.test = { - id: data['hash_id'], - creation_time: new Date(data['created_at']), - location: document.location.origin + this.location.prepareExternalUrl(`/result/${testId}`) - }; - - this.historyQuery = data['params']; - this.result = data['results']; - this.form = data['params']; - this.unicodeDomain = punycode.toUnicode(this.form.domain); - this.asciiDomain = punycode.toASCII(this.form.domain); - this.testCaseDescriptions = data['testcase_descriptions']; - - this.testCasesCount = this.displayResult(this.result, resetCollapsed); - - this.testCasesCountByModule = {}; - - for (const module of this.modules) { - const levels = {}; - for (const testcase of module.testcases) { - const level = testcase.level; - - if (!(level in levels)) { - levels[level] = 0; - } - - levels[level] ++; - } - - this.testCasesCountByModule[module.name] = Object.entries(this.severityLevels).sort(([, numLevel1], [_, numLevel2]) => numLevel2 - numLevel1) - .filter(([levelId, _]) => levelId in levels) - .map(([levelId, _]) => { - return { - name: levelId, - value: levels[levelId] - } - }); - } - - this.titleService.setTitle(`${this.unicodeDomain} · Zonemaster`); - }, error => { - this.alertService.error($localize `No data for this test.`) - }); - } - - private displayResult(results: Array, resetCollapsed: boolean) { - const testCasesCount = { - 'all': 0, - 'info': 0, - 'notice': 0, - 'warning': 0, - 'error': 0, - 'critical': 0, - } - - this.modules = []; - const modulesMap = {}; - - for (const entry of results) { - const currentModule = entry['module']; - const currentTestcase = entry['testcase']; - const currentLevel = entry['level'].toLowerCase(); - const numLevel = this.severityLevels[currentLevel]; - - entry['level'] = currentLevel; - - if (!(currentModule in modulesMap)) { - modulesMap[currentModule] = {name: currentModule, testcases: [], testcasesMap: {}} - - this.modules.push(modulesMap[currentModule]); - } - - if (!(currentTestcase in modulesMap[currentModule].testcasesMap)) { - modulesMap[currentModule].testcasesMap[currentTestcase] = { - id: currentTestcase, - entries: [], - level: 'info' - } - - modulesMap[currentModule].testcases.push(modulesMap[currentModule].testcasesMap[currentTestcase]); - - if (resetCollapsed || !(currentTestcase in this.isCollapsed)) { - this.isCollapsed[currentTestcase] = true; - this.isCollapsed[currentModule] = true; - } - } - - modulesMap[currentModule].testcasesMap[currentTestcase].entries.push(entry); - - if (numLevel > this.severityLevels[modulesMap[currentModule].testcasesMap[currentTestcase].level]) { - modulesMap[currentModule].testcasesMap[currentTestcase].level = currentLevel; - } - } - - for (const module in modulesMap) { - modulesMap[module].testcases.sort((testcase1, testcase2) => { - // sort messages by descending severity level, unspecified messages always on top - if (testcase1.id.toUpperCase() == 'UNSPECIFIED') { - return 1; - } - if (testcase2.id.toUpperCase() == 'UNSPECIFIED') { - return 1; - } - return this.severityLevels[testcase2.level] - this.severityLevels[testcase1.level]; - }) - for (const testcase in modulesMap[module].testcasesMap) { - const level = modulesMap[module].testcasesMap[testcase].level; - - testCasesCount[level] ++; - testCasesCount['all'] ++; - modulesMap[module].testcasesMap[testcase].entries.sort((msg1, msg2) => { - // sort messages by descending severity level - return this.severityLevels[msg2.level] - this.severityLevels[msg1.level]; - }) - } - } - - for (const testCase in this.isCollapsed) { - if (testCase.toUpperCase() == 'UNSPECIFIED') { - this.isCollapsed[testCase] = false; - } - } - - return testCasesCount; - } - - public getHistory() { - if (!this.history) { - this.alertService.info($localize `History information request is in progress.`); - - this.dnsCheckService.getTestHistory(this.historyQuery).then(data => { - this.history = data as any[]; - if (this.history.length === 0) { - this.alertService.info($localize `No previous tests found for this domain.`); - } else { - this.openModal(this.historyModal); - } - }); - } else { - this.openModal(this.historyModal); - } - } - - public getModuleName(moduleName) { - const moduleKey = moduleName.toLowerCase(); - if (moduleKey in this.moduleNames) { - return this.moduleNames[moduleKey]; - } else { - return moduleName; - } - } - - private exportedName(extension) { - return `zonemaster_result_${this.asciiDomain}_${this.test.id}.${extension}` - } - - public exportJson() { - const blob = new Blob([JSON.stringify(this.result)], { - type: 'application/javascript' - }); - - saveAs(blob, this.exportedName('json')); - } - - public exportHTML() { - let tbodyContent = ''; - for (let item of this.result) { - tbodyContent += ` - - ${this.getModuleName(item.module)} - ${this.severityLevelNames[item.level.toLowerCase()]} - ${item.message} - - `; - } - - const result = ` - - - - - - ${this.asciiDomain} • Zonemaster Test Result - - - -
-

${this.asciiDomain}

${formatDate(this.test.creation_time, 'yyyy-MM-dd HH:mm zzzz', 'en')} -
- - - - - - - - - - ${tbodyContent} - -
${$localize `Module`}${$localize `Level`}${$localize `Message`}
- - - `; - - const blob = new Blob([result], { - type: 'text/html;charset=utf-8' - }); - - saveAs(blob, this.exportedName('html')); - } - - public exportText() { - const csvData = this.ConvertTo([...this.result].slice(0), 'txt'); - const blob = new Blob([csvData], { - type: 'text/plain;charset=utf-8' - }); - - saveAs(blob, this.exportedName('txt')); - } - - public exportCSV() { - const csvData = this.ConvertTo([...this.result].slice(0), 'csv'); - const blob = new Blob([csvData], { - type: 'text/csv;charset=utf-8' - }); - saveAs(blob, this.exportedName('csv')); - } - - ConvertTo(objArray, extension: string) { - const array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray; - let str = ''; - let row = ''; - - for (const indexObj of this.header) { - if (extension === 'csv') { - row += indexObj + ';'; - } else { - row += indexObj + ' \t'; - } - } - row = row.slice(0, -1); - str += row + '\r\n'; - - for (let i = 1; i < array.length; i++) { - let line = ''; - for (const index of this.header) { - if (line !== '') { - if (extension === 'csv') { - line += ';'; - } else { - line += ' \t'; - } - } - line += array[i][index.toLowerCase()].trim(); - } - str += line + '\r\n'; - } - return str; - } - - public togglePillFilter(name) { - this.resultFilter[name] = !this.resultFilter[name]; - const atLeastOneActive = Object.keys(this.resultFilter).slice(1, -1).filter(el => this.resultFilter[el]); - this.searchQueryLength = atLeastOneActive.length; - - if (atLeastOneActive.length < 1) { - this.resultFilter['all'] = true; - } else if (name === 'all') { - for (const index of Object.keys(this.resultFilter).slice(1, -1)) { - this.resultFilter[index] = false; - } - this.resultFilter['all'] = true; - this.searchQueryLength = -1; - } else { - this.resultFilter['all'] = false; - } - - this.filterResults() - } - - public filterResults() { - const filteredResults = this.filterResultsSearch( - this.filterResultsLevel(this.result, this.resultFilter), - this.resultFilter['search'] - ); - this.displayResult(filteredResults, false); - } - - private filterResultsLevel(results: any[], levelFilter: Object) { - if (levelFilter['all']) { - return results; - } else { - const levels = Object.entries(levelFilter) - .filter(([_key, value]) => value === true) - .map(([key, _value]) => key); - - return results.filter(entry => levels.includes(entry.level.toLowerCase())); - } - } - - private filterResultsSearch(results: any[], query: string) { - if (!query) { - return results; - } - const queryLower = query.toLocaleLowerCase() - return results.filter(entry => entry.message.toLowerCase().includes(queryLower)); - } - - // inspired from - // https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript#30810322 - public copyLinkToClipboard(str) { - var btnClipboard = document.getElementsByClassName("btn-clipboard")[0]; - var icon = btnClipboard.firstElementChild; - - var resetIcon = function(oldIcon) { - setTimeout(function() { - icon.classList.remove(oldIcon); - icon.classList.add("fa-clipboard"); - }, 2000); - }; - - var textArea = document.createElement("textarea"); - textArea.value = str; - - textArea.style.top = "0"; - textArea.style.left = "0"; - textArea.style.position = "fixed"; - - document.body.appendChild(textArea); - textArea.focus(); - textArea.select(); - - var res = document.execCommand('copy'); - - if (res === true) { - icon.classList.remove("fa-clipboard"); - icon.classList.add("fa-check"); - - resetIcon("fa-check"); - } else { - icon.classList.remove("fa-clipboard"); - icon.classList.add("fa-remove"); - - resetIcon("fa-remove"); - } - - document.body.removeChild(textArea); - } - -} diff --git a/src/app/components/run-test/run-test.component.css b/src/app/components/run-test/run-test.component.css deleted file mode 100644 index 105e4efd..00000000 --- a/src/app/components/run-test/run-test.component.css +++ /dev/null @@ -1,10 +0,0 @@ -.run-test { - width: 80%; - margin: auto; -} - -@media(max-width:991px) { - .run-test { - width: 100%; - } -} diff --git a/src/app/components/run-test/run-test.component.html b/src/app/components/run-test/run-test.component.html deleted file mode 100644 index be80045e..00000000 --- a/src/app/components/run-test/run-test.component.html +++ /dev/null @@ -1,14 +0,0 @@ -
- - -
diff --git a/src/app/components/run-test/run-test.component.ts b/src/app/components/run-test/run-test.component.ts deleted file mode 100644 index 8fbabb14..00000000 --- a/src/app/components/run-test/run-test.component.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; -import {ViewEncapsulation} from '@angular/core'; -import { DnsCheckService } from '../../services/dns-check.service'; -import { Router} from '@angular/router'; -import { AlertService } from '../../services/alert.service'; -import { AppService } from '../../services/app.service'; -import { Title } from '@angular/platform-browser'; -import { FormComponent } from '../form/form.component'; -import * as punycode from 'punycode/'; - -@Component({ - selector: 'app-run-test', - templateUrl: './run-test.component.html', - styleUrls: ['./run-test.component.css'], - encapsulation: ViewEncapsulation.None -}) -export class RunTestComponent implements OnInit { - private intervalTime: number; - public runTestProgression = 0; - public showResult = false; - public showProgressBar = false; - public parentDataDS: any; - public parentDataNS: any; - public testId = ''; - public profiles = []; - public toggleFinished = false; - public requestError: object; - - @ViewChild(FormComponent) form: FormComponent; - - constructor(private alertService: AlertService, - private dnsCheckService: DnsCheckService, - private router: Router, - private appService: AppService, - private titleService: Title) { - this.intervalTime = this.appService.getConfig('pollingInterval'); - } - - ngOnInit() { - this.dnsCheckService.profileNames().then( (res: string[]) => this.profiles = res ); - } - - public fetchFromParent([type, domain]) { - this.dnsCheckService.fetchFromParent(domain).then(result => { - if (type == 'DS') { - this.parentDataDS = result['ds_list']; - } else if(type = 'NS') { - this.parentDataNS = result['ns_list']; - } - }, error => { - if (error.error.code === "-32602" && error.error.data.constructor === Array) { - this.requestError = error.error.data; - } else { - console.log(error); - this.alertService.error($localize `Error during parent data fetching.`); - this.form.disableForm(false); - } - }); - } - - public runTest(data: object) { - let testId: string; - - const self = this; - - this.dnsCheckService.startDomainTest(data).then(id => { - testId = id as string; - this.showProgressBar = true; - - const unicodeDomain = punycode.toUnicode(data['domain']); - - this.titleService.setTitle(`${unicodeDomain} · Zonemaster`); - - const handle = setInterval(() => { - self.dnsCheckService.testProgress(testId).then(res => { - - self.runTestProgression = parseInt(res as string, 10) as number; - - if (self.runTestProgression === 100) { - clearInterval(handle); - this.alertService.success($localize `Test completed!`, true); - self.testId = testId; - self.showResult = true; - self.showProgressBar = false; - self.runTestProgression = 5; - self.toggleFinished = !self.toggleFinished; - this.router.navigate(['/result', this.testId ], { state: { displayForm: true, displayNotification: true }}); - } - }); - }, this.intervalTime); - }, error => { - if (error.error.code === "-32602" && error.error.data.constructor === Array) { - this.requestError = error.error.data; - } else { - this.alertService.error($localize `An unexpected server error happened.`); - } - }); - } -} diff --git a/src/app/interceptors/mock.interceptor.ts b/src/app/interceptors/mock.interceptor.ts deleted file mode 100644 index 97b43a6b..00000000 --- a/src/app/interceptors/mock.interceptor.ts +++ /dev/null @@ -1,929 +0,0 @@ -import { Injectable, Injector } from '@angular/core'; -import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http'; -import { Observable, of } from 'rxjs'; - -const urls = [ - // Version info - { - url: 'https://zonemaster.net/api', - body: {jsonrpc: '2.0', id: 1643203570632, method:'version_info', params: {}}, - method: 'POST', - json: {jsonrpc: '2.0', id: 1643203570632, result: {zonemaster_engine: 'e2e-test', zonemaster_backend: 'e2e-test', zonemaster_ldns: 'e2e-test'}} - }, - - // Profile list in option - { - url: 'https://zonemaster.net/api', - body: {jsonrpc: '2.0', id:1643203351479, method: 'profile_names', params: {}}, - method: 'POST', - json: {jsonrpc: '2.0', id: 1643203351479, result: ["default", "test_profile"]} - }, - - // FR18 - Should display progress bar - // FR26 - Should display progress bar - { - url: 'https://zonemaster.net/api', - body: {'jsonrpc': '2.0', 'id': 1572254767685, 'method': 'start_domain_test', 'params': - { - 'language':'en', 'domain': 'progress.afNiC.Fr', 'profile': 'default', - 'nameservers': [], 'ds_info': [] - } - }, - method: 'POST', - json: {'jsonrpc': '2.0', 'id': 1572254767685, 'result': '2005cf23e9fb24b6'} - }, - - // FR19 - Should display progress bar when we add a NS name - { - url: 'https://zonemaster.net/api', - body: {'jsonrpc': '2.0', 'id': 1572254767685, 'method': 'start_domain_test', 'params': - { - 'language':'en', 'domain': 'progress.afNiC.Fr', 'profile': 'default', - 'nameservers': [{"ns": "ns1.nic.fr"}], 'ds_info': [] - } - }, - method: 'POST', - json: {'jsonrpc': '2.0', 'id': 1572254767685, 'result': '2005cf23e9fb24b6'} - }, - - // FR19 - should NOT display progress bar when we add a NS ip - { - url: 'https://zonemaster.net/api', - body: {'jsonrpc': '2.0', 'id': 1572254767685, 'method': 'start_domain_test', 'params': - { - 'language':'en', 'domain': 'progress.afNiC.Fr', 'profile': 'default', - 'nameservers': [{"ns":"", "ip": "192.134.4.1"}], 'ds_info': [] - } - }, - method: 'POST', - json: { - "jsonrpc": "2.0", - "error": { - "message": "Invalid method parameter(s).", - "code": "-32602", - "data": [ - { - "path": "/nameservers/0/ns", - "message": "The domain name character(s) are not supported" - } - ] - }, - "id": 1572254767685 - } - }, - - // FR20 - should display progress bar when we add a DS entry and launch a test - { - url: 'https://zonemaster.net/api', - body:{'jsonrpc': '2.0', 'id': 1572277567967, 'method': 'start_domain_test', 'params': - { - 'language':'en', 'domain': 'progress.afNiC.Fr', 'profile': 'default', - 'nameservers': [], 'ds_info': [{ - "keytag": 37610, - "algorithm":8, - "digtype":2, - "digest":"d2681e301f632bd76544e6d5b6631a12d97b5479ff07cd24efecd19203c77db3" - }] - } - }, - method: 'POST', - json: {'jsonrpc': '2.0', 'id': 1572277567967, 'result': '2005cf23e9fb24b6'} - }, - - // FR18 - Should display progress bar - // FR19 - Should display progress bar when we add a NS name - // FR20 - should display progress bar when we add a DS entry and launch a test - // FR26 - Should display progress bar - { - url: 'https://zonemaster.net/api', - body: {'jsonrpc': '2.0', 'id': 1572254972236, 'method': 'test_progress', 'params': {'test_id': '2005cf23e9fb24b6'}}, - method: 'POST', - json: {'jsonrpc': '2.0', 'id': 1572254972236, 'result': 50} - }, - - - // FR21 - Should display summary - // FR22 - Should display full messages - { - url: 'https://zonemaster.net/api', - body: {'jsonrpc': '2.0', 'id': 1572254767685, 'method': 'start_domain_test', 'params': - { - 'language':'en', 'domain': 'results.afNiC.Fr', 'profile': 'default', - 'nameservers': [], 'ds_info': [] - } - }, - method: 'POST', - json: {'jsonrpc': '2.0', 'id': 1572254767685, 'result': '226f6d4f44ae3f80'} - }, - - { - url: 'https://zonemaster.net/api', - body: {'jsonrpc': '2.0', 'id': 1572254767685, 'method': 'start_domain_test', 'params': - { - 'language':'en', 'domain': 'empty-results.afNiC.Fr', 'profile': 'default', - 'nameservers': [], 'ds_info': [] - } - }, - method: 'POST', - json: {'jsonrpc': '2.0', 'id': 1572254767685, 'result': 'a0fbcbf6c5ff5842'} - }, - - // FR21 - Should display summary - // FR22 - Should display full messages - { - url: 'https://zonemaster.net/api', - body: {'jsonrpc': '2.0', 'id': 1572254972236, 'method': 'test_progress', 'params': {'test_id': '226f6d4f44ae3f80'}}, - method: 'POST', - json: {'jsonrpc': '2.0', 'id': 1572254972236, 'result': 100} - }, - - - { - url: 'https://zonemaster.net/api', - body: {'jsonrpc': '2.0', 'id': 1572254972236, 'method': 'test_progress', 'params': {'test_id': 'a0fbcbf6c5ff5842'}}, - method: 'POST', - json: {'jsonrpc': '2.0', 'id': 1572254972236, 'result': 100} - }, - - - { - url: 'https://zonemaster.net/api', - body: {'jsonrpc': '2.0', 'id': 1572254972327, 'method': 'get_test_results', 'params': {'id': 'a0fbcbf6c5ff5842', 'language': 'en'}}, - method: 'POST', - json: {'jsonrpc': '2.0', 'id': 1572254972327, 'result': { - 'params': {'profile' : 'default', 'priority': 10, 'ipv6': true, 'ipv4': true, 'client_id': 'Zonemaster GUI', - 'nameservers': [], 'ds_info': [], 'domain': 'empty-results.afNiC.Fr', 'queue': 0, 'client_version': '3.1.0' - }, 'hash_id': 'a0fbcbf6c5ff5842', 'created_at': '2019-10-28T09:29:26Z', 'creation_time': '2019-10-28 09:29:26.288692', 'id': 49640, 'results':[] - } - } - }, - - - // FR21 - Should display summary - // FR22 - Should display full messages - - // FR23 - Should display previous tests - // FR24 - Should display previous run link - // FR25 - Should have an export button - // FR25 - Should open a modal that contains four export possibilities - { - url: 'https://zonemaster.net/api', - body: {'jsonrpc': '2.0', 'id': 1572254972327, 'method': 'get_test_results', 'params': {'id': '226f6d4f44ae3f80', 'language': 'en'}}, - method: 'POST', - json: {'jsonrpc': '2.0', 'id': 1572254972327, 'result': { - 'params': { - 'profile' : 'default', - 'priority': 10, - 'ipv6': true, - 'ipv4': true, - 'client_id': 'Zonemaster GUI', - 'nameservers': [], - 'ds_info': [], - 'domain': 'results.afNiC.Fr', - 'queue': 0, - 'client_version': '3.6.1' - }, - 'hash_id': 'efd1dedc98d456bf', - 'created_at': '2022-11-23T16:38:17Z', - 'creation_time': '2022-11-23 16:38:17', - 'id': 49640, - "testcase_descriptions": { - "CONSISTENCY04": "Name server NS consistency", - "ZONE08": "MX is not an alias", - "DNSSEC10": "Zone contains NSEC or NSEC3 records", - "NAMESERVER07": "To check whether authoritative name servers return an upward referral", - "UNSPECIFIED": "UNSPECIFIED", - "CONSISTENCY06": "SOA MNAME consistency", - "NAMESERVER04": "Same source address", - "ZONE10": "No multiple SOA records", - "SYNTAX08": "MX name must have a valid hostname", - "SYNTAX05": "Misuse of '@' character in the SOA RNAME field", - "ZONE05": "SOA 'expire' minimum value", - "NAMESERVER08": "Testing QNAME case insensitivity", - "CONNECTIVITY03": "AS Diversity", - "NAMESERVER02": "Test of EDNS0 support", - "NAMESERVER05": "Behaviour against AAAA query", - "BASIC01": "The domain must have a parent domain", - "SYNTAX01": "No illegal characters in the domain name", - "CONSISTENCY01": "SOA serial number consistency", - "DELEGATION06": "Existence of SOA", - "SYNTAX02": "No hyphen ('-') at the start or end of the domain name", - "SYNTAX04": "The NS name must have a valid domain/hostname", - "DELEGATION01": "Minimum number of name servers", - "ZONE04": "SOA 'retry' at least 1 hour", - "CONSISTENCY02": "SOA RNAME consistency", - "NAMESERVER03": "Test availability of zone transfer (AXFR)", - "ADDRESS01": "Name server address must be globally routable", - "CONSISTENCY03": "SOA timers consistency", - "DNSSEC15": "Existence of CDS and CDNSKEY", - "ADDRESS03": "Reverse DNS entry matches name server name", - "NAMESERVER09": "Testing QNAME case sensitivity", - "DNSSEC04": "Check for too short or too long RRSIG lifetimes", - "DELEGATION02": "Name servers must have distinct IP addresses", - "ADDRESS02": "Reverse DNS entry exists for name server IP address", - "DELEGATION05": "Name server must not point at CNAME alias", - "CONSISTENCY05": "Consistency between glue and authoritative data", - "SYNTAX03": "There must be no double hyphen ('--') in position 3 and 4 of the domain name", - "ZONE01": "Fully qualified master nameserver in SOA", - "ZONE03": "SOA 'retry' lower than 'refresh'", - "ZONE09": "MX record present", - "ZONE07": "SOA master is not an alias", - "DELEGATION07": "Parent glue name records present in child", - "SYNTAX07": "No illegal characters in the SOA MNAME field", - "DELEGATION04": "Name server is authoritative", - "SYNTAX06": "No illegal characters in the SOA RNAME field", - "NAMESERVER01": "A name server should not be a recursor", - "DELEGATION03": "No truncation of referrals", - "DNSSEC05": "Check for invalid DNSKEY algorithms", - "ZONE06": "SOA 'minimum' maximum value", - "ZONE02": "SOA 'refresh' minimum value", - "BASIC02": "The domain must have at least one working name server", - "NAMESERVER06": "NS can be resolved" - }, - 'results': [ - { - "message": "Using version v4.5.1 of the Zonemaster engine.\n", - "module": "SYSTEM", - "testcase": "UNSPECIFIED", - "level": "INFO" - }, - { - "testcase": "BASIC01", - "level": "INFO", - "module": "BASIC", - "message": "Parent domain 'fr' was found for the tested domain.\n" - }, - { - "level": "INFO", - "testcase": "BASIC02", - "message": "Nameserver ns1.nic.fr/192.134.4.1 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n", - "module": "BASIC" - }, - { - "level": "INFO", - "testcase": "BASIC02", - "module": "BASIC", - "message": "Nameserver ns1.nic.fr/2001:67c:2218:2::4:1 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n" - }, - { - "module": "BASIC", - "message": "Nameserver ns2.nic.fr/192.93.0.4 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n", - "testcase": "BASIC02", - "level": "INFO" - }, - { - "level": "INFO", - "testcase": "BASIC02", - "message": "Nameserver ns2.nic.fr/2001:660:3005:1::1:2 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n", - "module": "BASIC" - }, - { - "message": "Nameserver ns3.nic.fr/192.134.0.49 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n", - "module": "BASIC", - "testcase": "BASIC02", - "level": "INFO" - }, - { - "module": "BASIC", - "message": "Nameserver ns3.nic.fr/2001:660:3006:1::1:1 listed these servers as glue: ns1.nic.fr., ns2.nic.fr., ns3.nic.fr..\n", - "level": "INFO", - "testcase": "BASIC02" - }, - { - "module": "BASIC", - "message": "Functional nameserver found. \"A\" query for www.afnic.fr test skipped.\n", - "testcase": "UNSPECIFIED", - "level": "INFO" - }, - { - "module": "ADDRESS", - "message": "All Nameserver addresses are in the routable public addressing space.\n", - "level": "INFO", - "testcase": "ADDRESS01" - }, - { - "module": "ADDRESS", - "message": "Reverse DNS entry exists for each Nameserver IP address.\n", - "testcase": "ADDRESS02", - "level": "INFO" - }, - { - "message": "Every reverse DNS entry matches name server name.\n", - "module": "ADDRESS", - "testcase": "ADDRESS03", - "level": "INFO" - }, - { - "module": "CONNECTIVITY", - "message": "At least two IPv4 addresses of the authoritative nameservers are announce by different AS sets. A merged list of all AS: (\"2485, \"2486).\n", - "testcase": "CONNECTIVITY03", - "level": "INFO" - }, - { - "module": "CONNECTIVITY", - "message": "At least two IPv6 addresses of the authoritative nameservers are announce by different AS sets. A merged list of all AS: (\"2486, \"2485).\n", - "level": "INFO", - "testcase": "CONNECTIVITY03" - }, - { - "level": "INFO", - "testcase": "CONSISTENCY01", - "module": "CONSISTENCY", - "message": "Saw SOA serial number 2022112200 on following nameserver set : ns1.nic.fr/192.134.4.1; ns1.nic.fr/2001:67c:2218:2::4:1; ns2.nic.fr/192.93.0.4; ns2.nic.fr/2001:660:3005:1::1:2; ns3.nic.fr/192.134.0.49; ns3.nic.fr/2001:660:3006:1::1:1.\n" - }, - { - "message": "A single SOA serial number was found (2022112200).\n", - "module": "CONSISTENCY", - "testcase": "CONSISTENCY01", - "level": "INFO" - }, - { - "testcase": "CONSISTENCY02", - "level": "INFO", - "message": "A single SOA rname value was found (hostmaster.nic.fr.).\n", - "module": "CONSISTENCY" - }, - { - "level": "INFO", - "testcase": "CONSISTENCY03", - "module": "CONSISTENCY", - "message": "A single SOA time parameter set was seen (REFRESH=7200, RETRY=1800, EXPIRE=2419200, MINIMUM=5400).\n" - }, - { - "testcase": "CONSISTENCY04", - "level": "INFO", - "message": "A single NS set was found (ns1.nic.fr.; ns2.nic.fr.; ns3.nic.fr.).\n", - "module": "CONSISTENCY" - }, - { - "message": "Glue records are consistent between glue and authoritative data.\n", - "module": "CONSISTENCY", - "level": "INFO", - "testcase": "CONSISTENCY05" - }, - { - "message": "A single SOA mname value was seen (dnsmaster.nic.fr.).\n", - "module": "CONSISTENCY", - "level": "INFO", - "testcase": "CONSISTENCY06" - }, - { - "module": "DELEGATION", - "message": "Parent lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr). Lower limit set to 2.\n", - "level": "INFO", - "testcase": "DELEGATION01" - }, - { - "level": "INFO", - "testcase": "DELEGATION01", - "message": "Child lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr). Lower limit set to 2.\n", - "module": "DELEGATION" - }, - { - "module": "DELEGATION", - "message": "Child lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr) that resolve to IPv4 addresses (192.134.0.49; 192.134.4.1; 192.93.0.4). Lower limit set to 2.\n", - "testcase": "DELEGATION01", - "level": "INFO" - }, - { - "level": "INFO", - "testcase": "DELEGATION01", - "module": "DELEGATION", - "message": "Child lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr) that resolve to IPv6 addresses (2001:660:3005:1::1:2; 2001:660:3006:1::1:1; 2001:67c:2218:2::4:1). Lower limit set to 2.\n" - }, - { - "testcase": "DELEGATION01", - "level": "INFO", - "message": "Delegation lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr) that resolve to IPv4 addresses (192.134.0.49; 192.134.4.1; 192.93.0.4). Lower limit set to 2.\n", - "module": "DELEGATION" - }, - { - "message": "Delegation lists enough (3) nameservers (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr) that resolve to IPv6 addresses (2001:660:3005:1::1:2; 2001:660:3006:1::1:1; 2001:67c:2218:2::4:1). Lower limit set to 2.\n", - "module": "DELEGATION", - "level": "INFO", - "testcase": "DELEGATION01" - }, - { - "message": "All the IP addresses used by the nameservers in parent are unique.\n", - "module": "DELEGATION", - "level": "INFO", - "testcase": "DELEGATION02" - }, - { - "level": "INFO", - "testcase": "DELEGATION02", - "message": "All the IP addresses used by the nameservers in child are unique.\n", - "module": "DELEGATION" - }, - { - "level": "INFO", - "testcase": "DELEGATION02", - "module": "DELEGATION", - "message": "All the IP addresses used by the nameservers are unique.\n" - }, - { - "testcase": "DELEGATION03", - "level": "INFO", - "module": "DELEGATION", - "message": "The smallest possible legal referral packet is smaller than 513 octets (it is 373).\n" - }, - { - "module": "DELEGATION", - "message": "All these nameservers are confirmed to be authoritative : ns1.nic.fr; ns2.nic.fr; ns3.nic.fr.\n", - "testcase": "DELEGATION04", - "level": "INFO" - }, - { - "testcase": "DELEGATION05", - "level": "INFO", - "module": "DELEGATION", - "message": "No nameserver points to CNAME alias.\n" - }, - { - "level": "INFO", - "testcase": "DELEGATION06", - "message": "All the nameservers have SOA record.\n", - "module": "DELEGATION" - }, - { - "module": "DELEGATION", - "message": "All of the nameserver names are listed both at parent and child.\n", - "testcase": "DELEGATION07", - "level": "INFO" - }, - { - "message": "RRSIG with keytag 53080 and covering type(s) DNSKEY expires at : Wed Dec 21 20:36:15 2022.\n", - "module": "DNSSEC", - "level": "INFO", - "testcase": "DNSSEC04" - }, - { - "message": "RRSIG with keytag 15756 and covering type(s) SOA expires at : Wed Dec 21 12:48:04 2022.\n", - "module": "DNSSEC", - "testcase": "DNSSEC04", - "level": "INFO" - }, - { - "module": "DNSSEC", - "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", - "testcase": "DNSSEC05", - "level": "INFO" - }, - { - "testcase": "DNSSEC05", - "level": "INFO", - "module": "DNSSEC", - "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n" - }, - { - "testcase": "DNSSEC05", - "level": "INFO", - "module": "DNSSEC", - "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n" - }, - { - "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", - "module": "DNSSEC", - "testcase": "DNSSEC05", - "level": "INFO" - }, - { - "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", - "module": "DNSSEC", - "level": "INFO", - "testcase": "DNSSEC05" - }, - { - "level": "INFO", - "testcase": "DNSSEC05", - "module": "DNSSEC", - "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n" - }, - { - "level": "INFO", - "testcase": "DNSSEC05", - "module": "DNSSEC", - "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n" - }, - { - "testcase": "DNSSEC05", - "level": "INFO", - "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", - "module": "DNSSEC" - }, - { - "module": "DNSSEC", - "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", - "testcase": "DNSSEC05", - "level": "INFO" - }, - { - "testcase": "DNSSEC05", - "level": "INFO", - "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", - "module": "DNSSEC" - }, - { - "module": "DNSSEC", - "message": "The DNSKEY with tag 53080 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", - "level": "INFO", - "testcase": "DNSSEC05" - }, - { - "module": "DNSSEC", - "message": "The DNSKEY with tag 15756 uses algorithm number 13 (ECDSA Curve P-256 with SHA-256), which is OK.\n", - "level": "INFO", - "testcase": "DNSSEC05" - }, - { - "level": "INFO", - "testcase": "DNSSEC10", - "message": "The zone has NSEC3 records. Fetched from the nameservers with IP addresses \"192.134.0.49; 192.134.4.1; 192.93.0.4; 2001:660:3005:1::1:2; 2001:660:3006:1::1:1; 2001:67c:2218:2::4:1\".\n", - "module": "DNSSEC" - }, - { - "module": "DNSSEC", - "message": "No CDS or CDNSKEY RRsets are found on any name server.\n", - "testcase": "DNSSEC15", - "level": "INFO" - }, - { - "message": "Nameserver ns1.nic.fr/192.134.4.1 is not a recursor.\n", - "module": "NAMESERVER", - "ns": "ns1.nic.fr/192.134.4.1", - "testcase": "NAMESERVER01", - "level": "INFO" - }, - { - "testcase": "NAMESERVER01", - "level": "INFO", - "ns": "ns1.nic.fr/2001:67c:2218:2::4:1", - "module": "NAMESERVER", - "message": "Nameserver ns1.nic.fr/2001:67c:2218:2::4:1 is not a recursor.\n" - }, - { - "message": "Nameserver ns2.nic.fr/192.93.0.4 is not a recursor.\n", - "module": "NAMESERVER", - "testcase": "NAMESERVER01", - "ns": "ns2.nic.fr/192.93.0.4", - "level": "INFO" - }, - { - "ns": "ns2.nic.fr/2001:660:3005:1::1:2", - "testcase": "NAMESERVER01", - "level": "INFO", - "module": "NAMESERVER", - "message": "Nameserver ns2.nic.fr/2001:660:3005:1::1:2 is not a recursor.\n" - }, - { - "module": "NAMESERVER", - "message": "Nameserver ns3.nic.fr/192.134.0.49 is not a recursor.\n", - "testcase": "NAMESERVER01", - "level": "INFO", - "ns": "ns3.nic.fr/192.134.0.49" - }, - { - "message": "Nameserver ns3.nic.fr/2001:660:3006:1::1:1 is not a recursor.\n", - "module": "NAMESERVER", - "testcase": "NAMESERVER01", - "level": "INFO", - "ns": "ns3.nic.fr/2001:660:3006:1::1:1" - }, - { - "level": "INFO", - "testcase": "NAMESERVER02", - "ns": "All", - "message": "The following nameservers support EDNS0 : ns1.nic.fr/2001:67c:2218:2::4:1; ns3.nic.fr/192.134.0.49; ns1.nic.fr/192.134.4.1; ns3.nic.fr/2001:660:3006:1::1:1; ns2.nic.fr/192.93.0.4; ns2.nic.fr/2001:660:3005:1::1:2.\n", - "module": "NAMESERVER" - }, - { - "module": "NAMESERVER", - "message": "AXFR not available on nameserver ns1.nic.fr/192.134.4.1.\n", - "testcase": "NAMESERVER03", - "level": "INFO", - "ns": "ns1.nic.fr/192.134.4.1" - }, - { - "ns": "ns1.nic.fr/2001:67c:2218:2::4:1", - "testcase": "NAMESERVER03", - "level": "INFO", - "module": "NAMESERVER", - "message": "AXFR not available on nameserver ns1.nic.fr/2001:67c:2218:2::4:1.\n" - }, - { - "message": "AXFR not available on nameserver ns2.nic.fr/192.93.0.4.\n", - "module": "NAMESERVER", - "level": "INFO", - "testcase": "NAMESERVER03", - "ns": "ns2.nic.fr/192.93.0.4" - }, - { - "testcase": "NAMESERVER03", - "ns": "ns2.nic.fr/2001:660:3005:1::1:2", - "level": "INFO", - "message": "AXFR not available on nameserver ns2.nic.fr/2001:660:3005:1::1:2.\n", - "module": "NAMESERVER" - }, - { - "testcase": "NAMESERVER03", - "ns": "ns3.nic.fr/192.134.0.49", - "level": "INFO", - "module": "NAMESERVER", - "message": "AXFR not available on nameserver ns3.nic.fr/192.134.0.49.\n" - }, - { - "level": "INFO", - "testcase": "NAMESERVER03", - "ns": "ns3.nic.fr/2001:660:3006:1::1:1", - "message": "AXFR not available on nameserver ns3.nic.fr/2001:660:3006:1::1:1.\n", - "module": "NAMESERVER" - }, - { - "testcase": "NAMESERVER04", - "ns": "All", - "level": "INFO", - "message": "All nameservers reply with same IP used to query them.\n", - "module": "NAMESERVER" - }, - { - "message": "The following nameservers answer AAAA queries without problems : ns3.nic.fr/2001:660:3006:1::1:1; ns1.nic.fr/192.134.4.1; ns3.nic.fr/192.134.0.49; ns1.nic.fr/2001:67c:2218:2::4:1; ns2.nic.fr/192.93.0.4; ns2.nic.fr/2001:660:3005:1::1:2.\n", - "module": "NAMESERVER", - "level": "INFO", - "testcase": "NAMESERVER05", - "ns": "All" - }, - { - "ns": "All", - "testcase": "NAMESERVER06", - "level": "INFO", - "message": "All nameservers succeeded to resolve to an IP address.\n", - "module": "NAMESERVER" - }, - { - "level": "INFO", - "testcase": "NAMESERVER07", - "ns": "All", - "module": "NAMESERVER", - "message": "None of the following nameservers returns an upward referral : ns1.nic.fr; ns2.nic.fr; ns3.nic.fr.\n" - }, - { - "testcase": "NAMESERVER08", - "level": "INFO", - "ns": "ns1.nic.fr/192.134.4.1", - "message": "Nameserver ns1.nic.fr/192.134.4.1 preserves original case of queried names (WwW.afNiC.fr).\n", - "module": "NAMESERVER" - }, - { - "testcase": "NAMESERVER08", - "ns": "ns1.nic.fr/2001:67c:2218:2::4:1", - "level": "INFO", - "message": "Nameserver ns1.nic.fr/2001:67c:2218:2::4:1 preserves original case of queried names (WwW.afNiC.fr).\n", - "module": "NAMESERVER" - }, - { - "module": "NAMESERVER", - "message": "Nameserver ns2.nic.fr/192.93.0.4 preserves original case of queried names (WwW.afNiC.fr).\n", - "level": "INFO", - "testcase": "NAMESERVER08", - "ns": "ns2.nic.fr/192.93.0.4" - }, - { - "message": "Nameserver ns2.nic.fr/2001:660:3005:1::1:2 preserves original case of queried names (WwW.afNiC.fr).\n", - "module": "NAMESERVER", - "level": "INFO", - "testcase": "NAMESERVER08", - "ns": "ns2.nic.fr/2001:660:3005:1::1:2" - }, - { - "testcase": "NAMESERVER08", - "ns": "ns3.nic.fr/192.134.0.49", - "level": "INFO", - "module": "NAMESERVER", - "message": "Nameserver ns3.nic.fr/192.134.0.49 preserves original case of queried names (WwW.afNiC.fr).\n" - }, - { - "level": "INFO", - "testcase": "NAMESERVER08", - "ns": "ns3.nic.fr/2001:660:3006:1::1:1", - "message": "Nameserver ns3.nic.fr/2001:660:3006:1::1:1 preserves original case of queried names (WwW.afNiC.fr).\n", - "module": "NAMESERVER" - }, - { - "ns": "All", - "testcase": "NAMESERVER09", - "level": "INFO", - "message": "When asked for SOA records on \"www.afnic.fr\" with different cases, all servers reply consistently.\n", - "module": "NAMESERVER" - }, - { - "module": "SYNTAX", - "message": "No illegal characters in the domain name (afnic.fr).\n", - "level": "INFO", - "testcase": "SYNTAX01" - }, - { - "message": "Neither end of any label in the domain name (afnic.fr) has a hyphen.\n", - "module": "SYNTAX", - "level": "INFO", - "testcase": "SYNTAX02" - }, - { - "message": "Domain name (afnic.fr) has no label with a double hyphen ('--') in position 3 and 4 (with a prefix which is not 'xn--').\n", - "module": "SYNTAX", - "testcase": "SYNTAX03", - "level": "INFO" - }, - { - "testcase": "SYNTAX04", - "level": "INFO", - "module": "SYNTAX", - "message": "Nameserver (ns1.nic.fr) syntax is valid.\n" - }, - { - "testcase": "SYNTAX04", - "level": "INFO", - "message": "Nameserver (ns2.nic.fr) syntax is valid.\n", - "module": "SYNTAX" - }, - { - "module": "SYNTAX", - "message": "Nameserver (ns3.nic.fr) syntax is valid.\n", - "testcase": "SYNTAX04", - "level": "INFO" - }, - { - "module": "SYNTAX", - "message": "There is no misused '@' character in the SOA RNAME field (hostmaster.nic.fr.).\n", - "level": "INFO", - "testcase": "SYNTAX05" - }, - { - "message": "The SOA RNAME field (hostmaster@nic.fr) is compliant with RFC2822.\n", - "module": "SYNTAX", - "level": "INFO", - "testcase": "SYNTAX06" - }, - { - "level": "INFO", - "testcase": "SYNTAX07", - "message": "SOA MNAME (dnsmaster.nic.fr) syntax is valid.\n", - "module": "SYNTAX" - }, - { - "testcase": "SYNTAX08", - "level": "INFO", - "module": "SYNTAX", - "message": "Domain name MX (mx4.nic.fr) syntax is valid.\n" - }, - { - "testcase": "SYNTAX08", - "level": "INFO", - "message": "Domain name MX (mx5.nic.fr) syntax is valid.\n", - "module": "SYNTAX" - }, - { - "message": "SOA 'mname' nameserver dnsmaster.nic.fr/192.134.4.2 does not respond.\n", - "module": "ZONE", - "level": "NOTICE", - "testcase": "ZONE01" - }, - { - "testcase": "ZONE01", - "level": "NOTICE", - "message": "SOA 'mname' nameserver (dnsmaster.nic.fr) is not listed in \"parent\" NS records for tested zone (ns1.nic.fr; ns2.nic.fr; ns3.nic.fr).\n", - "module": "ZONE" - }, - { - "module": "ZONE", - "message": "SOA 'refresh' value (7200) is less than the recommended one (14400).\n", - "level": "NOTICE", - "testcase": "ZONE02" - }, - { - "testcase": "ZONE03", - "level": "INFO", - "message": "SOA 'refresh' value (7200) is higher than the SOA 'retry' value (1800).\n", - "module": "ZONE" - }, - { - "testcase": "ZONE04", - "level": "NOTICE", - "module": "ZONE", - "message": "SOA 'retry' value (1800) is less than the recommended one (3600).\n" - }, - { - "level": "INFO", - "testcase": "ZONE05", - "message": "SOA 'expire' value (2419200) is higher than the minimum recommended value (604800) and not lower than the 'refresh' value (7200).\n", - "module": "ZONE" - }, - { - "module": "ZONE", - "message": "SOA 'minimum' value (5400) is between the recommended ones (300/86400).\n", - "testcase": "ZONE06", - "level": "INFO" - }, - { - "testcase": "ZONE07", - "level": "INFO", - "module": "ZONE", - "message": "SOA 'mname' value (dnsmaster.nic.fr) refers to a NS which is not an alias (CNAME).\n" - }, - { - "level": "INFO", - "testcase": "ZONE07", - "module": "ZONE", - "message": "SOA 'mname' value (dnsmaster.nic.fr) refers to a NS which is not an alias (CNAME).\n" - }, - { - "level": "INFO", - "testcase": "ZONE08", - "module": "ZONE", - "message": "MX record for the domain is not pointing to a CNAME.\n" - }, - { - "testcase": "ZONE08", - "level": "INFO", - "message": "MX record for the domain is not pointing to a CNAME.\n", - "module": "ZONE" - }, - { - "module": "ZONE", - "message": "Mail targets in the MX RRset \"mx5.nic.fr.; mx4.nic.fr.\" returned from name servers \"2001:660:3006:1::1:1; 2001:67c:2218:2::4:1; 192.134.4.1; 2001:660:3005:1::1:2; 192.93.0.4; 192.134.0.49\".\n", - "testcase": "ZONE09", - "level": "INFO" - }, - { - "module": "ZONE", - "message": "A unique SOA record is returned by all nameservers of the zone.\n", - "level": "INFO", - "testcase": "ZONE10" - } - ] - } - } - }, - - // FR23 - Should display previous tests - // FR24 - Should display previous run link - // FR25 - Should have an export button - // FR25 - Should open a modal that contains four export possibilities - { - url: 'https://zonemaster.net/api', - body: {'jsonrpc': '2.0', 'id': 1572271917712, 'method': 'get_test_history', 'params': {'offset': 0, 'limit': 100, 'filter': 'all', 'frontend_params': {'domain': 'results.afNiC.Fr'}}}, - method: 'POST', - json: {'jsonrpc': '2.0', 'id': 1572271917712, 'result': [ - {'overall_result': 'error', 'created_at': '2019-10-28T09:24:57Z', 'creation_time': '2019-10-28 09:42:42.432378', 'id': '293f626579274f18'}, - {'overall_result': 'ok', 'created_at': '2019-10-28T09:24:57Z', 'creation_time': '2019-10-28 09:24:57.395431', 'id': '84bfac6ae74d0e62'}, - {'overall_result': 'ok', 'created_at': '2019-10-24T07:49:48Z', 'creation_time': '2019-10-24 07:49:48.079617', 'id': 'efe0931716b0068c'}, - {'overall_result': 'ok', 'created_at': '2019-10-24T07:49:16Z', 'creation_time': '2019-10-24 07:49:16.271481', 'id': '46acbdcbc456db1d'}, - {'overall_result': 'ok', 'created_at': '2019-10-24T07:35:52Z', 'creation_time': '2019-10-24 07:35:52.819536', 'id': 'fd5b10ae1a46ce5e'}, - {'overall_result': 'ok', 'created_at': '2019-10-24T07:35:21Z', 'creation_time': '2019-10-24 07:35:21.309154', 'id': '1b29b0582a99d7ab'}, - {'overall_result': 'ok', 'created_at': '2019-10-24T06:51:22Z', 'creation_time': '2019-10-24 06:51:22.373411', 'id': '8c4829b7f60edc25'}, - {'overall_result': 'ok', 'created_at': '2019-10-24T06:50:50Z', 'creation_time': '2019-10-24 06:50:50.801272', 'id': '9b89a0988dbccfdb'}, - {'overall_result': 'ok', 'created_at': '2019-10-24T06:39:37Z', 'creation_time': '2019-10-24 06:39:37.48699', 'id': '89c662ddd43a8b03'}, - {'overall_result': 'ok', 'created_at': '2019-10-24T06:39:05Z', 'creation_time': '2019-10-24 06:39:05.851497', 'id': '2add42a68594b37a'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T20:59:41Z', 'creation_time': '2019-10-23 20:59:41.594768', 'id': 'c334d7eb96af1d19'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T20:55:13Z', 'creation_time': '2019-10-23 20:55:13.205118', 'id': 'b4146c79de8b3638'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T20:46:06Z', 'creation_time': '2019-10-23 20:46:06.989113', 'id': '226f6d4f44ae3f80'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T20:40:46Z', 'creation_time': '2019-10-23 20:40:46.272244', 'id': 'a509e33a41f28322'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T20:34:21Z', 'creation_time': '2019-10-23 20:34:21.681947', 'id': '5d41c57fa24c76f5'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T20:28:25Z', 'creation_time': '2019-10-23 20:28:25.518303', 'id': '298b4c53d5024f44'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T20:16:39Z', 'creation_time': '2019-10-23 20:16:39.466781', 'id': 'f9c587426b885036'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T19:41:31Z', 'creation_time': '2019-10-23 19:41:31.048622', 'id': 'bb2109eb54d9ef58'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T16:20:56Z', 'creation_time': '2019-10-23 16:20:56.180064', 'id': '3ff7e65752a431e8'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T15:37:05Z', 'creation_time': '2019-10-23 15:37:05.935049', 'id': 'e8a3507cce49392d'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T15:25:35Z', 'creation_time': '2019-10-23 15:25:35.162808', 'id': '19f7773777cdad1a'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T15:09:54Z', 'creation_time': '2019-10-23 15:09:54.801371', 'id': '61907eb87c8bb1d9'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T14:52:56Z', 'creation_time': '2019-10-23 14:52:56.823486', 'id': '497ce5549e80d6d1'}, - {'overall_result': 'ok', 'created_at': '2019-10-23T14:39:25Z', 'creation_time': '2019-10-23 14:39:25.259204', 'id': '470e62da84dcbd16'}, - {'overall_result': 'error', 'created_at': '2019-10-23T14:26:35Z', 'creation_time': '2019-10-23 14:26:35.853106', 'id': '9b8e25c35dc365ac'} - ]} - }, -]; - -@Injectable() -export class HttpMockRequestInterceptor implements HttpInterceptor { - constructor(private injector: Injector) {} - - intercept(request: HttpRequest, next: HttpHandler): Observable> { - for (const element of urls) { - - // Don't compare client info - let requestParams = {...request.body?.params}; - delete requestParams['client_version']; - delete requestParams['client_id']; - - if (request.url === element.url - && request.method === element.method - && request.body.method === element.body.method - && JSON.stringify(requestParams) === JSON.stringify(element.body.params) - ) { - console.log('Loaded from json: ' + request.body.method ); - return of(new HttpResponse({ status: 200, body: element.json })); - } - } - console.log('Loaded from http call :' + request.url); - return next.handle(request); - } -} diff --git a/src/app/models/alert.ts b/src/app/models/alert.ts deleted file mode 100644 index 2dc627b1..00000000 --- a/src/app/models/alert.ts +++ /dev/null @@ -1,11 +0,0 @@ -export class Alert { - type: AlertType; - message: string; -} - -export enum AlertType { - Success, - Error, - Info, - Warning -} diff --git a/src/app/models/index.ts b/src/app/models/index.ts deleted file mode 100644 index ab34032f..00000000 --- a/src/app/models/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './alert'; diff --git a/src/app/pipes/romanize.pipe.ts b/src/app/pipes/romanize.pipe.ts deleted file mode 100644 index fff032e7..00000000 --- a/src/app/pipes/romanize.pipe.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; - -@Pipe({ - name: 'romanize' -}) -export class RomanizePipe implements PipeTransform { - - transform(value: any): any { - - if (!+value) { - return value; - } - - const digits = value.toString().split(''); - const key = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', - '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', - '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']; - let roman = ''; - let i = 3; - let res; - - while (i--) { - roman = (key[+digits.pop() + (i * 10)] || '') + roman; - res = Array(+digits.join('') + 1).join('M') + roman; - } - - return res; - } -} diff --git a/src/app/pipes/safe-html.pipe.ts b/src/app/pipes/safe-html.pipe.ts deleted file mode 100644 index 6f19c797..00000000 --- a/src/app/pipes/safe-html.pipe.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; -import { DomSanitizer } from '@angular/platform-browser'; - -@Pipe({ name: 'safeHtml'}) -export class SafeHtmlPipe implements PipeTransform { - constructor(private sanitized: DomSanitizer) {} - transform(value) { - return this.sanitized.bypassSecurityTrustHtml(value); - } -} diff --git a/src/app/services/alert.service.ts b/src/app/services/alert.service.ts deleted file mode 100644 index bf854e49..00000000 --- a/src/app/services/alert.service.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Router, NavigationStart } from '@angular/router'; -import { Alert, AlertType } from '../models/alert'; -import { Observable, Subject } from 'rxjs'; - - -@Injectable() -export class AlertService { - private subject = new Subject(); - private keepAfterRouteChange = false; // not clear alert messages on route change - - constructor(private router: Router) { - router.events.subscribe(event => { - if (event instanceof NavigationStart) { - if (this.keepAfterRouteChange) { - this.keepAfterRouteChange = false; - } else { - this.clear(); - } - } - }); - } - - getAlert(): Observable { - return this.subject.asObservable(); - } - - success(message: string, keepAfterRouteChange = false) { - this.alert(AlertType.Success, message, keepAfterRouteChange); - } - - error(message: string, keepAfterRouteChange = false) { - this.alert(AlertType.Error, message, keepAfterRouteChange); - } - - info(message: string, keepAfterRouteChange = false) { - this.alert(AlertType.Info, message, keepAfterRouteChange); - } - - warn(message: string, keepAfterRouteChange = false) { - this.alert(AlertType.Warning, message, keepAfterRouteChange); - } - - alert(type: AlertType, message: string, keepAfterRouteChange = false) { - this.keepAfterRouteChange = keepAfterRouteChange; - this.subject.next({ type: type, message: message }); - } - - clear() { - this.subject.next(); - } -} diff --git a/src/app/services/app.service.ts b/src/app/services/app.service.ts deleted file mode 100644 index dc005e18..00000000 --- a/src/app/services/app.service.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { environment } from '../../environments/environment'; -import { clientInfo } from '../../environments/version'; - -@Injectable() -export class AppService { - - private static config = {}; - - constructor(private http: HttpClient) { } - - public loadConfig(): Promise { - return this.http.get(this.getConfig('configUrl')) - .toPromise() - .then(res => { - AppService.config = res; - }) - .catch(reason => { - console.warn('Failed to load configuration, using default settings.', reason.message); - AppService.config = {}; - }) - } - - public getConfig(key) { - return AppService.config[key] || environment[key]; - } - - public getClientInfo() { - return clientInfo; - } -} diff --git a/src/app/services/dns-check.service.ts b/src/app/services/dns-check.service.ts deleted file mode 100644 index 878f4161..00000000 --- a/src/app/services/dns-check.service.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { Injectable, Inject, LOCALE_ID } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import {AppService} from './app.service'; - - -@Injectable() -export class DnsCheckService { - private backendUrl: string; - private clientInfo: object; - private _profiles: string[]; - - constructor(@Inject(LOCALE_ID) private locale: string, private http: HttpClient, - appService: AppService) { - - this.backendUrl = appService.getConfig('apiEndpoint'); - this.clientInfo = appService.getClientInfo(); - - if (!this.backendUrl) { - console.error($localize `Please set the api endpoint`); - } - } - - private RPCRequest(method, params = {}, guiInfo = true) { - const id = Date.now(); - - if (guiInfo) { - params['client_version'] = this.clientInfo['version']; - params['client_id'] = this.clientInfo['id']; - } - - const data = { - 'jsonrpc': '2.0', - id, - method, - params - }; - - return new Promise((resolve, reject) => { - this.http.post(this.backendUrl, data) - .subscribe(res => { - if ('result' in res) { - resolve(res['result']); - } else { - console.error(res); - reject(res); - } - }, (err) => { - console.error(err); - reject(err); - }); - }); - } - - // API Implementation from https://github.com/zonemaster/zonemaster-backend/blob/master/docs/API.md - public versionInfo() { - return this.RPCRequest('version_info', {}, false); - } - - public profileNames() { - return this.RPCRequest('profile_names', {}, false); - } - - public startDomainTest(data) { - return this.RPCRequest('start_domain_test', { - language: this.locale, - ...data - }); - } - - public testProgress(testId) { - return this.RPCRequest('test_progress', {'test_id': testId}, false); - } - - public getTestResults(testId: string) { - return this.RPCRequest('get_test_results', { id: testId, language: this.locale }, false); - } - - public getTestHistory(data, offset = 0, limit = 100, filter = 'all') { - const domain = data["domain"]; - return this.RPCRequest('get_test_history', { - offset, - limit, - filter, - 'frontend_params': {domain}}, false); - } - - public fetchFromParent(domain) { - return this.RPCRequest('get_data_from_parent_zone', { - language: this.locale, - domain: domain - }, false); - } - - public getProfileNames(): string[] { - console.log('getProfiles') - return this._profiles; - } - - public setProfileNames(profiles: string[]): void { - console.log('setProfil') - this._profiles = profiles; - } -} diff --git a/src/app/services/navigation.service.ts b/src/app/services/navigation.service.ts deleted file mode 100644 index 9c1e0305..00000000 --- a/src/app/services/navigation.service.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Injectable } from '@angular/core'; -import { BehaviorSubject } from 'rxjs'; -@Injectable() -export class NavigationService { - public height: BehaviorSubject = new BehaviorSubject(0); - - setHeight(newHeight) { - this.height.next(newHeight) - } -} diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/src/assets/app.config.sample.json b/src/assets/app.config.sample.json deleted file mode 100644 index cbc76305..00000000 --- a/src/assets/app.config.sample.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "apiEndpoint": "/api", - "contactAddress": "contact@zonemaster.net", - "defaultLanguage": "en", - "enabledLanguages": [ "da", "en", "es", "fi", "fr", "nb", "sl", "sv" ], - "logoUrl": "assets/images/zonemaster_logo_2021_color.png", - "msgBanner": "", - "pollingInterval": 5000, - "footerLogo": "", - "footerLogoAlt": "" -} diff --git a/src/assets/css/error.css b/src/assets/css/error.css deleted file mode 100644 index 003ee2ac..00000000 --- a/src/assets/css/error.css +++ /dev/null @@ -1,70 +0,0 @@ -body { - font-family: Lucida,sans-serif; -} - -h1 { - color: #AA0000; - border-bottom: 1px solid #444; -} - -h2 { color: #444; } - -pre { - font-family: "lucida console","monaco","andale mono","bitstream vera sans mono","consolas",monospace; - font-size: 12px; - border-left: 2px solid #777; - padding-left: 1em; -} - -footer { - font-size: 10px; -} - -span.key { - color: #449; - font-weight: bold; - width: 120px; - display: inline; -} - -span.value { - color: #494; -} - -/* these are for the message boxes */ - -pre.content { - background-color: #eee; - color: #000; - padding: 1em; - margin: 0; - border: 1px solid #aaa; - border-top: 0; - margin-bottom: 1em; -} - -div.title { - font-family: "lucida console","monaco","andale mono","bitstream vera sans mono","consolas",monospace; - font-size: 12px; - background-color: #aaa; - color: #444; - font-weight: bold; - padding: 3px; - padding-left: 10px; -} - -pre.content span.nu { - color: #889; - margin-right: 10px; -} - -pre.error { - background: #334; - color: #ccd; - padding: 1em; - border-top: 1px solid #000; - border-left: 1px solid #000; - border-right: 1px solid #eee; - border-bottom: 1px solid #eee; -} - diff --git a/src/assets/css/export_style.css b/src/assets/css/export_style.css deleted file mode 100644 index a9aecdd5..00000000 --- a/src/assets/css/export_style.css +++ /dev/null @@ -1,2 +0,0 @@ -.alert-critical,.alert-error { background: red;} -.alert-notice { background: green;} \ No newline at end of file diff --git a/src/assets/css/nojs_style.css b/src/assets/css/nojs_style.css deleted file mode 100644 index 28e1d5c9..00000000 --- a/src/assets/css/nojs_style.css +++ /dev/null @@ -1,6 +0,0 @@ -.tab { margin-left: 40px; } -.error { color: Red; } -.warning { color: Orange; } -.notice { color: Green; } -.info { color: Grey; } - diff --git a/src/assets/favicon/favicon.ico b/src/assets/favicon/favicon.ico deleted file mode 100644 index 59f81b48..00000000 Binary files a/src/assets/favicon/favicon.ico and /dev/null differ diff --git a/src/assets/fonts/bootstrap-icons.css b/src/assets/fonts/bootstrap-icons.css new file mode 100644 index 00000000..1a360046 --- /dev/null +++ b/src/assets/fonts/bootstrap-icons.css @@ -0,0 +1,6181 @@ +/*! + * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/) + * Copyright 2019-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ + +@font-face { + font-display: block; + font-family: 'bootstrap-icons'; + src: + url('bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6') + format('woff2'), + url('bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6') + format('woff'); +} + +.bi::before, +[class^='bi-']::before, +[class*=' bi-']::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -0.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { + content: '\f67f'; +} +.bi-alarm-fill::before { + content: '\f101'; +} +.bi-alarm::before { + content: '\f102'; +} +.bi-align-bottom::before { + content: '\f103'; +} +.bi-align-center::before { + content: '\f104'; +} +.bi-align-end::before { + content: '\f105'; +} +.bi-align-middle::before { + content: '\f106'; +} +.bi-align-start::before { + content: '\f107'; +} +.bi-align-top::before { + content: '\f108'; +} +.bi-alt::before { + content: '\f109'; +} +.bi-app-indicator::before { + content: '\f10a'; +} +.bi-app::before { + content: '\f10b'; +} +.bi-archive-fill::before { + content: '\f10c'; +} +.bi-archive::before { + content: '\f10d'; +} +.bi-arrow-90deg-down::before { + content: '\f10e'; +} +.bi-arrow-90deg-left::before { + content: '\f10f'; +} +.bi-arrow-90deg-right::before { + content: '\f110'; +} +.bi-arrow-90deg-up::before { + content: '\f111'; +} +.bi-arrow-bar-down::before { + content: '\f112'; +} +.bi-arrow-bar-left::before { + content: '\f113'; +} +.bi-arrow-bar-right::before { + content: '\f114'; +} +.bi-arrow-bar-up::before { + content: '\f115'; +} +.bi-arrow-clockwise::before { + content: '\f116'; +} +.bi-arrow-counterclockwise::before { + content: '\f117'; +} +.bi-arrow-down-circle-fill::before { + content: '\f118'; +} +.bi-arrow-down-circle::before { + content: '\f119'; +} +.bi-arrow-down-left-circle-fill::before { + content: '\f11a'; +} +.bi-arrow-down-left-circle::before { + content: '\f11b'; +} +.bi-arrow-down-left-square-fill::before { + content: '\f11c'; +} +.bi-arrow-down-left-square::before { + content: '\f11d'; +} +.bi-arrow-down-left::before { + content: '\f11e'; +} +.bi-arrow-down-right-circle-fill::before { + content: '\f11f'; +} +.bi-arrow-down-right-circle::before { + content: '\f120'; +} +.bi-arrow-down-right-square-fill::before { + content: '\f121'; +} +.bi-arrow-down-right-square::before { + content: '\f122'; +} +.bi-arrow-down-right::before { + content: '\f123'; +} +.bi-arrow-down-short::before { + content: '\f124'; +} +.bi-arrow-down-square-fill::before { + content: '\f125'; +} +.bi-arrow-down-square::before { + content: '\f126'; +} +.bi-arrow-down-up::before { + content: '\f127'; +} +.bi-arrow-down::before { + content: '\f128'; +} +.bi-arrow-left-circle-fill::before { + content: '\f129'; +} +.bi-arrow-left-circle::before { + content: '\f12a'; +} +.bi-arrow-left-right::before { + content: '\f12b'; +} +.bi-arrow-left-short::before { + content: '\f12c'; +} +.bi-arrow-left-square-fill::before { + content: '\f12d'; +} +.bi-arrow-left-square::before { + content: '\f12e'; +} +.bi-arrow-left::before { + content: '\f12f'; +} +.bi-arrow-repeat::before { + content: '\f130'; +} +.bi-arrow-return-left::before { + content: '\f131'; +} +.bi-arrow-return-right::before { + content: '\f132'; +} +.bi-arrow-right-circle-fill::before { + content: '\f133'; +} +.bi-arrow-right-circle::before { + content: '\f134'; +} +.bi-arrow-right-short::before { + content: '\f135'; +} +.bi-arrow-right-square-fill::before { + content: '\f136'; +} +.bi-arrow-right-square::before { + content: '\f137'; +} +.bi-arrow-right::before { + content: '\f138'; +} +.bi-arrow-up-circle-fill::before { + content: '\f139'; +} +.bi-arrow-up-circle::before { + content: '\f13a'; +} +.bi-arrow-up-left-circle-fill::before { + content: '\f13b'; +} +.bi-arrow-up-left-circle::before { + content: '\f13c'; +} +.bi-arrow-up-left-square-fill::before { + content: '\f13d'; +} +.bi-arrow-up-left-square::before { + content: '\f13e'; +} +.bi-arrow-up-left::before { + content: '\f13f'; +} +.bi-arrow-up-right-circle-fill::before { + content: '\f140'; +} +.bi-arrow-up-right-circle::before { + content: '\f141'; +} +.bi-arrow-up-right-square-fill::before { + content: '\f142'; +} +.bi-arrow-up-right-square::before { + content: '\f143'; +} +.bi-arrow-up-right::before { + content: '\f144'; +} +.bi-arrow-up-short::before { + content: '\f145'; +} +.bi-arrow-up-square-fill::before { + content: '\f146'; +} +.bi-arrow-up-square::before { + content: '\f147'; +} +.bi-arrow-up::before { + content: '\f148'; +} +.bi-arrows-angle-contract::before { + content: '\f149'; +} +.bi-arrows-angle-expand::before { + content: '\f14a'; +} +.bi-arrows-collapse::before { + content: '\f14b'; +} +.bi-arrows-expand::before { + content: '\f14c'; +} +.bi-arrows-fullscreen::before { + content: '\f14d'; +} +.bi-arrows-move::before { + content: '\f14e'; +} +.bi-aspect-ratio-fill::before { + content: '\f14f'; +} +.bi-aspect-ratio::before { + content: '\f150'; +} +.bi-asterisk::before { + content: '\f151'; +} +.bi-at::before { + content: '\f152'; +} +.bi-award-fill::before { + content: '\f153'; +} +.bi-award::before { + content: '\f154'; +} +.bi-back::before { + content: '\f155'; +} +.bi-backspace-fill::before { + content: '\f156'; +} +.bi-backspace-reverse-fill::before { + content: '\f157'; +} +.bi-backspace-reverse::before { + content: '\f158'; +} +.bi-backspace::before { + content: '\f159'; +} +.bi-badge-3d-fill::before { + content: '\f15a'; +} +.bi-badge-3d::before { + content: '\f15b'; +} +.bi-badge-4k-fill::before { + content: '\f15c'; +} +.bi-badge-4k::before { + content: '\f15d'; +} +.bi-badge-8k-fill::before { + content: '\f15e'; +} +.bi-badge-8k::before { + content: '\f15f'; +} +.bi-badge-ad-fill::before { + content: '\f160'; +} +.bi-badge-ad::before { + content: '\f161'; +} +.bi-badge-ar-fill::before { + content: '\f162'; +} +.bi-badge-ar::before { + content: '\f163'; +} +.bi-badge-cc-fill::before { + content: '\f164'; +} +.bi-badge-cc::before { + content: '\f165'; +} +.bi-badge-hd-fill::before { + content: '\f166'; +} +.bi-badge-hd::before { + content: '\f167'; +} +.bi-badge-tm-fill::before { + content: '\f168'; +} +.bi-badge-tm::before { + content: '\f169'; +} +.bi-badge-vo-fill::before { + content: '\f16a'; +} +.bi-badge-vo::before { + content: '\f16b'; +} +.bi-badge-vr-fill::before { + content: '\f16c'; +} +.bi-badge-vr::before { + content: '\f16d'; +} +.bi-badge-wc-fill::before { + content: '\f16e'; +} +.bi-badge-wc::before { + content: '\f16f'; +} +.bi-bag-check-fill::before { + content: '\f170'; +} +.bi-bag-check::before { + content: '\f171'; +} +.bi-bag-dash-fill::before { + content: '\f172'; +} +.bi-bag-dash::before { + content: '\f173'; +} +.bi-bag-fill::before { + content: '\f174'; +} +.bi-bag-plus-fill::before { + content: '\f175'; +} +.bi-bag-plus::before { + content: '\f176'; +} +.bi-bag-x-fill::before { + content: '\f177'; +} +.bi-bag-x::before { + content: '\f178'; +} +.bi-bag::before { + content: '\f179'; +} +.bi-bar-chart-fill::before { + content: '\f17a'; +} +.bi-bar-chart-line-fill::before { + content: '\f17b'; +} +.bi-bar-chart-line::before { + content: '\f17c'; +} +.bi-bar-chart-steps::before { + content: '\f17d'; +} +.bi-bar-chart::before { + content: '\f17e'; +} +.bi-basket-fill::before { + content: '\f17f'; +} +.bi-basket::before { + content: '\f180'; +} +.bi-basket2-fill::before { + content: '\f181'; +} +.bi-basket2::before { + content: '\f182'; +} +.bi-basket3-fill::before { + content: '\f183'; +} +.bi-basket3::before { + content: '\f184'; +} +.bi-battery-charging::before { + content: '\f185'; +} +.bi-battery-full::before { + content: '\f186'; +} +.bi-battery-half::before { + content: '\f187'; +} +.bi-battery::before { + content: '\f188'; +} +.bi-bell-fill::before { + content: '\f189'; +} +.bi-bell::before { + content: '\f18a'; +} +.bi-bezier::before { + content: '\f18b'; +} +.bi-bezier2::before { + content: '\f18c'; +} +.bi-bicycle::before { + content: '\f18d'; +} +.bi-binoculars-fill::before { + content: '\f18e'; +} +.bi-binoculars::before { + content: '\f18f'; +} +.bi-blockquote-left::before { + content: '\f190'; +} +.bi-blockquote-right::before { + content: '\f191'; +} +.bi-book-fill::before { + content: '\f192'; +} +.bi-book-half::before { + content: '\f193'; +} +.bi-book::before { + content: '\f194'; +} +.bi-bookmark-check-fill::before { + content: '\f195'; +} +.bi-bookmark-check::before { + content: '\f196'; +} +.bi-bookmark-dash-fill::before { + content: '\f197'; +} +.bi-bookmark-dash::before { + content: '\f198'; +} +.bi-bookmark-fill::before { + content: '\f199'; +} +.bi-bookmark-heart-fill::before { + content: '\f19a'; +} +.bi-bookmark-heart::before { + content: '\f19b'; +} +.bi-bookmark-plus-fill::before { + content: '\f19c'; +} +.bi-bookmark-plus::before { + content: '\f19d'; +} +.bi-bookmark-star-fill::before { + content: '\f19e'; +} +.bi-bookmark-star::before { + content: '\f19f'; +} +.bi-bookmark-x-fill::before { + content: '\f1a0'; +} +.bi-bookmark-x::before { + content: '\f1a1'; +} +.bi-bookmark::before { + content: '\f1a2'; +} +.bi-bookmarks-fill::before { + content: '\f1a3'; +} +.bi-bookmarks::before { + content: '\f1a4'; +} +.bi-bookshelf::before { + content: '\f1a5'; +} +.bi-bootstrap-fill::before { + content: '\f1a6'; +} +.bi-bootstrap-reboot::before { + content: '\f1a7'; +} +.bi-bootstrap::before { + content: '\f1a8'; +} +.bi-border-all::before { + content: '\f1a9'; +} +.bi-border-bottom::before { + content: '\f1aa'; +} +.bi-border-center::before { + content: '\f1ab'; +} +.bi-border-inner::before { + content: '\f1ac'; +} +.bi-border-left::before { + content: '\f1ad'; +} +.bi-border-middle::before { + content: '\f1ae'; +} +.bi-border-outer::before { + content: '\f1af'; +} +.bi-border-right::before { + content: '\f1b0'; +} +.bi-border-style::before { + content: '\f1b1'; +} +.bi-border-top::before { + content: '\f1b2'; +} +.bi-border-width::before { + content: '\f1b3'; +} +.bi-border::before { + content: '\f1b4'; +} +.bi-bounding-box-circles::before { + content: '\f1b5'; +} +.bi-bounding-box::before { + content: '\f1b6'; +} +.bi-box-arrow-down-left::before { + content: '\f1b7'; +} +.bi-box-arrow-down-right::before { + content: '\f1b8'; +} +.bi-box-arrow-down::before { + content: '\f1b9'; +} +.bi-box-arrow-in-down-left::before { + content: '\f1ba'; +} +.bi-box-arrow-in-down-right::before { + content: '\f1bb'; +} +.bi-box-arrow-in-down::before { + content: '\f1bc'; +} +.bi-box-arrow-in-left::before { + content: '\f1bd'; +} +.bi-box-arrow-in-right::before { + content: '\f1be'; +} +.bi-box-arrow-in-up-left::before { + content: '\f1bf'; +} +.bi-box-arrow-in-up-right::before { + content: '\f1c0'; +} +.bi-box-arrow-in-up::before { + content: '\f1c1'; +} +.bi-box-arrow-left::before { + content: '\f1c2'; +} +.bi-box-arrow-right::before { + content: '\f1c3'; +} +.bi-box-arrow-up-left::before { + content: '\f1c4'; +} +.bi-box-arrow-up-right::before { + content: '\f1c5'; +} +.bi-box-arrow-up::before { + content: '\f1c6'; +} +.bi-box-seam::before { + content: '\f1c7'; +} +.bi-box::before { + content: '\f1c8'; +} +.bi-braces::before { + content: '\f1c9'; +} +.bi-bricks::before { + content: '\f1ca'; +} +.bi-briefcase-fill::before { + content: '\f1cb'; +} +.bi-briefcase::before { + content: '\f1cc'; +} +.bi-brightness-alt-high-fill::before { + content: '\f1cd'; +} +.bi-brightness-alt-high::before { + content: '\f1ce'; +} +.bi-brightness-alt-low-fill::before { + content: '\f1cf'; +} +.bi-brightness-alt-low::before { + content: '\f1d0'; +} +.bi-brightness-high-fill::before { + content: '\f1d1'; +} +.bi-brightness-high::before { + content: '\f1d2'; +} +.bi-brightness-low-fill::before { + content: '\f1d3'; +} +.bi-brightness-low::before { + content: '\f1d4'; +} +.bi-broadcast-pin::before { + content: '\f1d5'; +} +.bi-broadcast::before { + content: '\f1d6'; +} +.bi-brush-fill::before { + content: '\f1d7'; +} +.bi-brush::before { + content: '\f1d8'; +} +.bi-bucket-fill::before { + content: '\f1d9'; +} +.bi-bucket::before { + content: '\f1da'; +} +.bi-bug-fill::before { + content: '\f1db'; +} +.bi-bug::before { + content: '\f1dc'; +} +.bi-building::before { + content: '\f1dd'; +} +.bi-bullseye::before { + content: '\f1de'; +} +.bi-calculator-fill::before { + content: '\f1df'; +} +.bi-calculator::before { + content: '\f1e0'; +} +.bi-calendar-check-fill::before { + content: '\f1e1'; +} +.bi-calendar-check::before { + content: '\f1e2'; +} +.bi-calendar-date-fill::before { + content: '\f1e3'; +} +.bi-calendar-date::before { + content: '\f1e4'; +} +.bi-calendar-day-fill::before { + content: '\f1e5'; +} +.bi-calendar-day::before { + content: '\f1e6'; +} +.bi-calendar-event-fill::before { + content: '\f1e7'; +} +.bi-calendar-event::before { + content: '\f1e8'; +} +.bi-calendar-fill::before { + content: '\f1e9'; +} +.bi-calendar-minus-fill::before { + content: '\f1ea'; +} +.bi-calendar-minus::before { + content: '\f1eb'; +} +.bi-calendar-month-fill::before { + content: '\f1ec'; +} +.bi-calendar-month::before { + content: '\f1ed'; +} +.bi-calendar-plus-fill::before { + content: '\f1ee'; +} +.bi-calendar-plus::before { + content: '\f1ef'; +} +.bi-calendar-range-fill::before { + content: '\f1f0'; +} +.bi-calendar-range::before { + content: '\f1f1'; +} +.bi-calendar-week-fill::before { + content: '\f1f2'; +} +.bi-calendar-week::before { + content: '\f1f3'; +} +.bi-calendar-x-fill::before { + content: '\f1f4'; +} +.bi-calendar-x::before { + content: '\f1f5'; +} +.bi-calendar::before { + content: '\f1f6'; +} +.bi-calendar2-check-fill::before { + content: '\f1f7'; +} +.bi-calendar2-check::before { + content: '\f1f8'; +} +.bi-calendar2-date-fill::before { + content: '\f1f9'; +} +.bi-calendar2-date::before { + content: '\f1fa'; +} +.bi-calendar2-day-fill::before { + content: '\f1fb'; +} +.bi-calendar2-day::before { + content: '\f1fc'; +} +.bi-calendar2-event-fill::before { + content: '\f1fd'; +} +.bi-calendar2-event::before { + content: '\f1fe'; +} +.bi-calendar2-fill::before { + content: '\f1ff'; +} +.bi-calendar2-minus-fill::before { + content: '\f200'; +} +.bi-calendar2-minus::before { + content: '\f201'; +} +.bi-calendar2-month-fill::before { + content: '\f202'; +} +.bi-calendar2-month::before { + content: '\f203'; +} +.bi-calendar2-plus-fill::before { + content: '\f204'; +} +.bi-calendar2-plus::before { + content: '\f205'; +} +.bi-calendar2-range-fill::before { + content: '\f206'; +} +.bi-calendar2-range::before { + content: '\f207'; +} +.bi-calendar2-week-fill::before { + content: '\f208'; +} +.bi-calendar2-week::before { + content: '\f209'; +} +.bi-calendar2-x-fill::before { + content: '\f20a'; +} +.bi-calendar2-x::before { + content: '\f20b'; +} +.bi-calendar2::before { + content: '\f20c'; +} +.bi-calendar3-event-fill::before { + content: '\f20d'; +} +.bi-calendar3-event::before { + content: '\f20e'; +} +.bi-calendar3-fill::before { + content: '\f20f'; +} +.bi-calendar3-range-fill::before { + content: '\f210'; +} +.bi-calendar3-range::before { + content: '\f211'; +} +.bi-calendar3-week-fill::before { + content: '\f212'; +} +.bi-calendar3-week::before { + content: '\f213'; +} +.bi-calendar3::before { + content: '\f214'; +} +.bi-calendar4-event::before { + content: '\f215'; +} +.bi-calendar4-range::before { + content: '\f216'; +} +.bi-calendar4-week::before { + content: '\f217'; +} +.bi-calendar4::before { + content: '\f218'; +} +.bi-camera-fill::before { + content: '\f219'; +} +.bi-camera-reels-fill::before { + content: '\f21a'; +} +.bi-camera-reels::before { + content: '\f21b'; +} +.bi-camera-video-fill::before { + content: '\f21c'; +} +.bi-camera-video-off-fill::before { + content: '\f21d'; +} +.bi-camera-video-off::before { + content: '\f21e'; +} +.bi-camera-video::before { + content: '\f21f'; +} +.bi-camera::before { + content: '\f220'; +} +.bi-camera2::before { + content: '\f221'; +} +.bi-capslock-fill::before { + content: '\f222'; +} +.bi-capslock::before { + content: '\f223'; +} +.bi-card-checklist::before { + content: '\f224'; +} +.bi-card-heading::before { + content: '\f225'; +} +.bi-card-image::before { + content: '\f226'; +} +.bi-card-list::before { + content: '\f227'; +} +.bi-card-text::before { + content: '\f228'; +} +.bi-caret-down-fill::before { + content: '\f229'; +} +.bi-caret-down-square-fill::before { + content: '\f22a'; +} +.bi-caret-down-square::before { + content: '\f22b'; +} +.bi-caret-down::before { + content: '\f22c'; +} +.bi-caret-left-fill::before { + content: '\f22d'; +} +.bi-caret-left-square-fill::before { + content: '\f22e'; +} +.bi-caret-left-square::before { + content: '\f22f'; +} +.bi-caret-left::before { + content: '\f230'; +} +.bi-caret-right-fill::before { + content: '\f231'; +} +.bi-caret-right-square-fill::before { + content: '\f232'; +} +.bi-caret-right-square::before { + content: '\f233'; +} +.bi-caret-right::before { + content: '\f234'; +} +.bi-caret-up-fill::before { + content: '\f235'; +} +.bi-caret-up-square-fill::before { + content: '\f236'; +} +.bi-caret-up-square::before { + content: '\f237'; +} +.bi-caret-up::before { + content: '\f238'; +} +.bi-cart-check-fill::before { + content: '\f239'; +} +.bi-cart-check::before { + content: '\f23a'; +} +.bi-cart-dash-fill::before { + content: '\f23b'; +} +.bi-cart-dash::before { + content: '\f23c'; +} +.bi-cart-fill::before { + content: '\f23d'; +} +.bi-cart-plus-fill::before { + content: '\f23e'; +} +.bi-cart-plus::before { + content: '\f23f'; +} +.bi-cart-x-fill::before { + content: '\f240'; +} +.bi-cart-x::before { + content: '\f241'; +} +.bi-cart::before { + content: '\f242'; +} +.bi-cart2::before { + content: '\f243'; +} +.bi-cart3::before { + content: '\f244'; +} +.bi-cart4::before { + content: '\f245'; +} +.bi-cash-stack::before { + content: '\f246'; +} +.bi-cash::before { + content: '\f247'; +} +.bi-cast::before { + content: '\f248'; +} +.bi-chat-dots-fill::before { + content: '\f249'; +} +.bi-chat-dots::before { + content: '\f24a'; +} +.bi-chat-fill::before { + content: '\f24b'; +} +.bi-chat-left-dots-fill::before { + content: '\f24c'; +} +.bi-chat-left-dots::before { + content: '\f24d'; +} +.bi-chat-left-fill::before { + content: '\f24e'; +} +.bi-chat-left-quote-fill::before { + content: '\f24f'; +} +.bi-chat-left-quote::before { + content: '\f250'; +} +.bi-chat-left-text-fill::before { + content: '\f251'; +} +.bi-chat-left-text::before { + content: '\f252'; +} +.bi-chat-left::before { + content: '\f253'; +} +.bi-chat-quote-fill::before { + content: '\f254'; +} +.bi-chat-quote::before { + content: '\f255'; +} +.bi-chat-right-dots-fill::before { + content: '\f256'; +} +.bi-chat-right-dots::before { + content: '\f257'; +} +.bi-chat-right-fill::before { + content: '\f258'; +} +.bi-chat-right-quote-fill::before { + content: '\f259'; +} +.bi-chat-right-quote::before { + content: '\f25a'; +} +.bi-chat-right-text-fill::before { + content: '\f25b'; +} +.bi-chat-right-text::before { + content: '\f25c'; +} +.bi-chat-right::before { + content: '\f25d'; +} +.bi-chat-square-dots-fill::before { + content: '\f25e'; +} +.bi-chat-square-dots::before { + content: '\f25f'; +} +.bi-chat-square-fill::before { + content: '\f260'; +} +.bi-chat-square-quote-fill::before { + content: '\f261'; +} +.bi-chat-square-quote::before { + content: '\f262'; +} +.bi-chat-square-text-fill::before { + content: '\f263'; +} +.bi-chat-square-text::before { + content: '\f264'; +} +.bi-chat-square::before { + content: '\f265'; +} +.bi-chat-text-fill::before { + content: '\f266'; +} +.bi-chat-text::before { + content: '\f267'; +} +.bi-chat::before { + content: '\f268'; +} +.bi-check-all::before { + content: '\f269'; +} +.bi-check-circle-fill::before { + content: '\f26a'; +} +.bi-check-circle::before { + content: '\f26b'; +} +.bi-check-square-fill::before { + content: '\f26c'; +} +.bi-check-square::before { + content: '\f26d'; +} +.bi-check::before { + content: '\f26e'; +} +.bi-check2-all::before { + content: '\f26f'; +} +.bi-check2-circle::before { + content: '\f270'; +} +.bi-check2-square::before { + content: '\f271'; +} +.bi-check2::before { + content: '\f272'; +} +.bi-chevron-bar-contract::before { + content: '\f273'; +} +.bi-chevron-bar-down::before { + content: '\f274'; +} +.bi-chevron-bar-expand::before { + content: '\f275'; +} +.bi-chevron-bar-left::before { + content: '\f276'; +} +.bi-chevron-bar-right::before { + content: '\f277'; +} +.bi-chevron-bar-up::before { + content: '\f278'; +} +.bi-chevron-compact-down::before { + content: '\f279'; +} +.bi-chevron-compact-left::before { + content: '\f27a'; +} +.bi-chevron-compact-right::before { + content: '\f27b'; +} +.bi-chevron-compact-up::before { + content: '\f27c'; +} +.bi-chevron-contract::before { + content: '\f27d'; +} +.bi-chevron-double-down::before { + content: '\f27e'; +} +.bi-chevron-double-left::before { + content: '\f27f'; +} +.bi-chevron-double-right::before { + content: '\f280'; +} +.bi-chevron-double-up::before { + content: '\f281'; +} +.bi-chevron-down::before { + content: '\f282'; +} +.bi-chevron-expand::before { + content: '\f283'; +} +.bi-chevron-left::before { + content: '\f284'; +} +.bi-chevron-right::before { + content: '\f285'; +} +.bi-chevron-up::before { + content: '\f286'; +} +.bi-circle-fill::before { + content: '\f287'; +} +.bi-circle-half::before { + content: '\f288'; +} +.bi-circle-square::before { + content: '\f289'; +} +.bi-circle::before { + content: '\f28a'; +} +.bi-clipboard-check::before { + content: '\f28b'; +} +.bi-clipboard-data::before { + content: '\f28c'; +} +.bi-clipboard-minus::before { + content: '\f28d'; +} +.bi-clipboard-plus::before { + content: '\f28e'; +} +.bi-clipboard-x::before { + content: '\f28f'; +} +.bi-clipboard::before { + content: '\f290'; +} +.bi-clock-fill::before { + content: '\f291'; +} +.bi-clock-history::before { + content: '\f292'; +} +.bi-clock::before { + content: '\f293'; +} +.bi-cloud-arrow-down-fill::before { + content: '\f294'; +} +.bi-cloud-arrow-down::before { + content: '\f295'; +} +.bi-cloud-arrow-up-fill::before { + content: '\f296'; +} +.bi-cloud-arrow-up::before { + content: '\f297'; +} +.bi-cloud-check-fill::before { + content: '\f298'; +} +.bi-cloud-check::before { + content: '\f299'; +} +.bi-cloud-download-fill::before { + content: '\f29a'; +} +.bi-cloud-download::before { + content: '\f29b'; +} +.bi-cloud-drizzle-fill::before { + content: '\f29c'; +} +.bi-cloud-drizzle::before { + content: '\f29d'; +} +.bi-cloud-fill::before { + content: '\f29e'; +} +.bi-cloud-fog-fill::before { + content: '\f29f'; +} +.bi-cloud-fog::before { + content: '\f2a0'; +} +.bi-cloud-fog2-fill::before { + content: '\f2a1'; +} +.bi-cloud-fog2::before { + content: '\f2a2'; +} +.bi-cloud-hail-fill::before { + content: '\f2a3'; +} +.bi-cloud-hail::before { + content: '\f2a4'; +} +.bi-cloud-haze-fill::before { + content: '\f2a6'; +} +.bi-cloud-haze::before { + content: '\f2a7'; +} +.bi-cloud-haze2-fill::before { + content: '\f2a8'; +} +.bi-cloud-lightning-fill::before { + content: '\f2a9'; +} +.bi-cloud-lightning-rain-fill::before { + content: '\f2aa'; +} +.bi-cloud-lightning-rain::before { + content: '\f2ab'; +} +.bi-cloud-lightning::before { + content: '\f2ac'; +} +.bi-cloud-minus-fill::before { + content: '\f2ad'; +} +.bi-cloud-minus::before { + content: '\f2ae'; +} +.bi-cloud-moon-fill::before { + content: '\f2af'; +} +.bi-cloud-moon::before { + content: '\f2b0'; +} +.bi-cloud-plus-fill::before { + content: '\f2b1'; +} +.bi-cloud-plus::before { + content: '\f2b2'; +} +.bi-cloud-rain-fill::before { + content: '\f2b3'; +} +.bi-cloud-rain-heavy-fill::before { + content: '\f2b4'; +} +.bi-cloud-rain-heavy::before { + content: '\f2b5'; +} +.bi-cloud-rain::before { + content: '\f2b6'; +} +.bi-cloud-slash-fill::before { + content: '\f2b7'; +} +.bi-cloud-slash::before { + content: '\f2b8'; +} +.bi-cloud-sleet-fill::before { + content: '\f2b9'; +} +.bi-cloud-sleet::before { + content: '\f2ba'; +} +.bi-cloud-snow-fill::before { + content: '\f2bb'; +} +.bi-cloud-snow::before { + content: '\f2bc'; +} +.bi-cloud-sun-fill::before { + content: '\f2bd'; +} +.bi-cloud-sun::before { + content: '\f2be'; +} +.bi-cloud-upload-fill::before { + content: '\f2bf'; +} +.bi-cloud-upload::before { + content: '\f2c0'; +} +.bi-cloud::before { + content: '\f2c1'; +} +.bi-clouds-fill::before { + content: '\f2c2'; +} +.bi-clouds::before { + content: '\f2c3'; +} +.bi-cloudy-fill::before { + content: '\f2c4'; +} +.bi-cloudy::before { + content: '\f2c5'; +} +.bi-code-slash::before { + content: '\f2c6'; +} +.bi-code-square::before { + content: '\f2c7'; +} +.bi-code::before { + content: '\f2c8'; +} +.bi-collection-fill::before { + content: '\f2c9'; +} +.bi-collection-play-fill::before { + content: '\f2ca'; +} +.bi-collection-play::before { + content: '\f2cb'; +} +.bi-collection::before { + content: '\f2cc'; +} +.bi-columns-gap::before { + content: '\f2cd'; +} +.bi-columns::before { + content: '\f2ce'; +} +.bi-command::before { + content: '\f2cf'; +} +.bi-compass-fill::before { + content: '\f2d0'; +} +.bi-compass::before { + content: '\f2d1'; +} +.bi-cone-striped::before { + content: '\f2d2'; +} +.bi-cone::before { + content: '\f2d3'; +} +.bi-controller::before { + content: '\f2d4'; +} +.bi-cpu-fill::before { + content: '\f2d5'; +} +.bi-cpu::before { + content: '\f2d6'; +} +.bi-credit-card-2-back-fill::before { + content: '\f2d7'; +} +.bi-credit-card-2-back::before { + content: '\f2d8'; +} +.bi-credit-card-2-front-fill::before { + content: '\f2d9'; +} +.bi-credit-card-2-front::before { + content: '\f2da'; +} +.bi-credit-card-fill::before { + content: '\f2db'; +} +.bi-credit-card::before { + content: '\f2dc'; +} +.bi-crop::before { + content: '\f2dd'; +} +.bi-cup-fill::before { + content: '\f2de'; +} +.bi-cup-straw::before { + content: '\f2df'; +} +.bi-cup::before { + content: '\f2e0'; +} +.bi-cursor-fill::before { + content: '\f2e1'; +} +.bi-cursor-text::before { + content: '\f2e2'; +} +.bi-cursor::before { + content: '\f2e3'; +} +.bi-dash-circle-dotted::before { + content: '\f2e4'; +} +.bi-dash-circle-fill::before { + content: '\f2e5'; +} +.bi-dash-circle::before { + content: '\f2e6'; +} +.bi-dash-square-dotted::before { + content: '\f2e7'; +} +.bi-dash-square-fill::before { + content: '\f2e8'; +} +.bi-dash-square::before { + content: '\f2e9'; +} +.bi-dash::before { + content: '\f2ea'; +} +.bi-diagram-2-fill::before { + content: '\f2eb'; +} +.bi-diagram-2::before { + content: '\f2ec'; +} +.bi-diagram-3-fill::before { + content: '\f2ed'; +} +.bi-diagram-3::before { + content: '\f2ee'; +} +.bi-diamond-fill::before { + content: '\f2ef'; +} +.bi-diamond-half::before { + content: '\f2f0'; +} +.bi-diamond::before { + content: '\f2f1'; +} +.bi-dice-1-fill::before { + content: '\f2f2'; +} +.bi-dice-1::before { + content: '\f2f3'; +} +.bi-dice-2-fill::before { + content: '\f2f4'; +} +.bi-dice-2::before { + content: '\f2f5'; +} +.bi-dice-3-fill::before { + content: '\f2f6'; +} +.bi-dice-3::before { + content: '\f2f7'; +} +.bi-dice-4-fill::before { + content: '\f2f8'; +} +.bi-dice-4::before { + content: '\f2f9'; +} +.bi-dice-5-fill::before { + content: '\f2fa'; +} +.bi-dice-5::before { + content: '\f2fb'; +} +.bi-dice-6-fill::before { + content: '\f2fc'; +} +.bi-dice-6::before { + content: '\f2fd'; +} +.bi-disc-fill::before { + content: '\f2fe'; +} +.bi-disc::before { + content: '\f2ff'; +} +.bi-discord::before { + content: '\f300'; +} +.bi-display-fill::before { + content: '\f301'; +} +.bi-display::before { + content: '\f302'; +} +.bi-distribute-horizontal::before { + content: '\f303'; +} +.bi-distribute-vertical::before { + content: '\f304'; +} +.bi-door-closed-fill::before { + content: '\f305'; +} +.bi-door-closed::before { + content: '\f306'; +} +.bi-door-open-fill::before { + content: '\f307'; +} +.bi-door-open::before { + content: '\f308'; +} +.bi-dot::before { + content: '\f309'; +} +.bi-download::before { + content: '\f30a'; +} +.bi-droplet-fill::before { + content: '\f30b'; +} +.bi-droplet-half::before { + content: '\f30c'; +} +.bi-droplet::before { + content: '\f30d'; +} +.bi-earbuds::before { + content: '\f30e'; +} +.bi-easel-fill::before { + content: '\f30f'; +} +.bi-easel::before { + content: '\f310'; +} +.bi-egg-fill::before { + content: '\f311'; +} +.bi-egg-fried::before { + content: '\f312'; +} +.bi-egg::before { + content: '\f313'; +} +.bi-eject-fill::before { + content: '\f314'; +} +.bi-eject::before { + content: '\f315'; +} +.bi-emoji-angry-fill::before { + content: '\f316'; +} +.bi-emoji-angry::before { + content: '\f317'; +} +.bi-emoji-dizzy-fill::before { + content: '\f318'; +} +.bi-emoji-dizzy::before { + content: '\f319'; +} +.bi-emoji-expressionless-fill::before { + content: '\f31a'; +} +.bi-emoji-expressionless::before { + content: '\f31b'; +} +.bi-emoji-frown-fill::before { + content: '\f31c'; +} +.bi-emoji-frown::before { + content: '\f31d'; +} +.bi-emoji-heart-eyes-fill::before { + content: '\f31e'; +} +.bi-emoji-heart-eyes::before { + content: '\f31f'; +} +.bi-emoji-laughing-fill::before { + content: '\f320'; +} +.bi-emoji-laughing::before { + content: '\f321'; +} +.bi-emoji-neutral-fill::before { + content: '\f322'; +} +.bi-emoji-neutral::before { + content: '\f323'; +} +.bi-emoji-smile-fill::before { + content: '\f324'; +} +.bi-emoji-smile-upside-down-fill::before { + content: '\f325'; +} +.bi-emoji-smile-upside-down::before { + content: '\f326'; +} +.bi-emoji-smile::before { + content: '\f327'; +} +.bi-emoji-sunglasses-fill::before { + content: '\f328'; +} +.bi-emoji-sunglasses::before { + content: '\f329'; +} +.bi-emoji-wink-fill::before { + content: '\f32a'; +} +.bi-emoji-wink::before { + content: '\f32b'; +} +.bi-envelope-fill::before { + content: '\f32c'; +} +.bi-envelope-open-fill::before { + content: '\f32d'; +} +.bi-envelope-open::before { + content: '\f32e'; +} +.bi-envelope::before { + content: '\f32f'; +} +.bi-eraser-fill::before { + content: '\f330'; +} +.bi-eraser::before { + content: '\f331'; +} +.bi-exclamation-circle-fill::before { + content: '\f332'; +} +.bi-exclamation-circle::before { + content: '\f333'; +} +.bi-exclamation-diamond-fill::before { + content: '\f334'; +} +.bi-exclamation-diamond::before { + content: '\f335'; +} +.bi-exclamation-octagon-fill::before { + content: '\f336'; +} +.bi-exclamation-octagon::before { + content: '\f337'; +} +.bi-exclamation-square-fill::before { + content: '\f338'; +} +.bi-exclamation-square::before { + content: '\f339'; +} +.bi-exclamation-triangle-fill::before { + content: '\f33a'; +} +.bi-exclamation-triangle::before { + content: '\f33b'; +} +.bi-exclamation::before { + content: '\f33c'; +} +.bi-exclude::before { + content: '\f33d'; +} +.bi-eye-fill::before { + content: '\f33e'; +} +.bi-eye-slash-fill::before { + content: '\f33f'; +} +.bi-eye-slash::before { + content: '\f340'; +} +.bi-eye::before { + content: '\f341'; +} +.bi-eyedropper::before { + content: '\f342'; +} +.bi-eyeglasses::before { + content: '\f343'; +} +.bi-facebook::before { + content: '\f344'; +} +.bi-file-arrow-down-fill::before { + content: '\f345'; +} +.bi-file-arrow-down::before { + content: '\f346'; +} +.bi-file-arrow-up-fill::before { + content: '\f347'; +} +.bi-file-arrow-up::before { + content: '\f348'; +} +.bi-file-bar-graph-fill::before { + content: '\f349'; +} +.bi-file-bar-graph::before { + content: '\f34a'; +} +.bi-file-binary-fill::before { + content: '\f34b'; +} +.bi-file-binary::before { + content: '\f34c'; +} +.bi-file-break-fill::before { + content: '\f34d'; +} +.bi-file-break::before { + content: '\f34e'; +} +.bi-file-check-fill::before { + content: '\f34f'; +} +.bi-file-check::before { + content: '\f350'; +} +.bi-file-code-fill::before { + content: '\f351'; +} +.bi-file-code::before { + content: '\f352'; +} +.bi-file-diff-fill::before { + content: '\f353'; +} +.bi-file-diff::before { + content: '\f354'; +} +.bi-file-earmark-arrow-down-fill::before { + content: '\f355'; +} +.bi-file-earmark-arrow-down::before { + content: '\f356'; +} +.bi-file-earmark-arrow-up-fill::before { + content: '\f357'; +} +.bi-file-earmark-arrow-up::before { + content: '\f358'; +} +.bi-file-earmark-bar-graph-fill::before { + content: '\f359'; +} +.bi-file-earmark-bar-graph::before { + content: '\f35a'; +} +.bi-file-earmark-binary-fill::before { + content: '\f35b'; +} +.bi-file-earmark-binary::before { + content: '\f35c'; +} +.bi-file-earmark-break-fill::before { + content: '\f35d'; +} +.bi-file-earmark-break::before { + content: '\f35e'; +} +.bi-file-earmark-check-fill::before { + content: '\f35f'; +} +.bi-file-earmark-check::before { + content: '\f360'; +} +.bi-file-earmark-code-fill::before { + content: '\f361'; +} +.bi-file-earmark-code::before { + content: '\f362'; +} +.bi-file-earmark-diff-fill::before { + content: '\f363'; +} +.bi-file-earmark-diff::before { + content: '\f364'; +} +.bi-file-earmark-easel-fill::before { + content: '\f365'; +} +.bi-file-earmark-easel::before { + content: '\f366'; +} +.bi-file-earmark-excel-fill::before { + content: '\f367'; +} +.bi-file-earmark-excel::before { + content: '\f368'; +} +.bi-file-earmark-fill::before { + content: '\f369'; +} +.bi-file-earmark-font-fill::before { + content: '\f36a'; +} +.bi-file-earmark-font::before { + content: '\f36b'; +} +.bi-file-earmark-image-fill::before { + content: '\f36c'; +} +.bi-file-earmark-image::before { + content: '\f36d'; +} +.bi-file-earmark-lock-fill::before { + content: '\f36e'; +} +.bi-file-earmark-lock::before { + content: '\f36f'; +} +.bi-file-earmark-lock2-fill::before { + content: '\f370'; +} +.bi-file-earmark-lock2::before { + content: '\f371'; +} +.bi-file-earmark-medical-fill::before { + content: '\f372'; +} +.bi-file-earmark-medical::before { + content: '\f373'; +} +.bi-file-earmark-minus-fill::before { + content: '\f374'; +} +.bi-file-earmark-minus::before { + content: '\f375'; +} +.bi-file-earmark-music-fill::before { + content: '\f376'; +} +.bi-file-earmark-music::before { + content: '\f377'; +} +.bi-file-earmark-person-fill::before { + content: '\f378'; +} +.bi-file-earmark-person::before { + content: '\f379'; +} +.bi-file-earmark-play-fill::before { + content: '\f37a'; +} +.bi-file-earmark-play::before { + content: '\f37b'; +} +.bi-file-earmark-plus-fill::before { + content: '\f37c'; +} +.bi-file-earmark-plus::before { + content: '\f37d'; +} +.bi-file-earmark-post-fill::before { + content: '\f37e'; +} +.bi-file-earmark-post::before { + content: '\f37f'; +} +.bi-file-earmark-ppt-fill::before { + content: '\f380'; +} +.bi-file-earmark-ppt::before { + content: '\f381'; +} +.bi-file-earmark-richtext-fill::before { + content: '\f382'; +} +.bi-file-earmark-richtext::before { + content: '\f383'; +} +.bi-file-earmark-ruled-fill::before { + content: '\f384'; +} +.bi-file-earmark-ruled::before { + content: '\f385'; +} +.bi-file-earmark-slides-fill::before { + content: '\f386'; +} +.bi-file-earmark-slides::before { + content: '\f387'; +} +.bi-file-earmark-spreadsheet-fill::before { + content: '\f388'; +} +.bi-file-earmark-spreadsheet::before { + content: '\f389'; +} +.bi-file-earmark-text-fill::before { + content: '\f38a'; +} +.bi-file-earmark-text::before { + content: '\f38b'; +} +.bi-file-earmark-word-fill::before { + content: '\f38c'; +} +.bi-file-earmark-word::before { + content: '\f38d'; +} +.bi-file-earmark-x-fill::before { + content: '\f38e'; +} +.bi-file-earmark-x::before { + content: '\f38f'; +} +.bi-file-earmark-zip-fill::before { + content: '\f390'; +} +.bi-file-earmark-zip::before { + content: '\f391'; +} +.bi-file-earmark::before { + content: '\f392'; +} +.bi-file-easel-fill::before { + content: '\f393'; +} +.bi-file-easel::before { + content: '\f394'; +} +.bi-file-excel-fill::before { + content: '\f395'; +} +.bi-file-excel::before { + content: '\f396'; +} +.bi-file-fill::before { + content: '\f397'; +} +.bi-file-font-fill::before { + content: '\f398'; +} +.bi-file-font::before { + content: '\f399'; +} +.bi-file-image-fill::before { + content: '\f39a'; +} +.bi-file-image::before { + content: '\f39b'; +} +.bi-file-lock-fill::before { + content: '\f39c'; +} +.bi-file-lock::before { + content: '\f39d'; +} +.bi-file-lock2-fill::before { + content: '\f39e'; +} +.bi-file-lock2::before { + content: '\f39f'; +} +.bi-file-medical-fill::before { + content: '\f3a0'; +} +.bi-file-medical::before { + content: '\f3a1'; +} +.bi-file-minus-fill::before { + content: '\f3a2'; +} +.bi-file-minus::before { + content: '\f3a3'; +} +.bi-file-music-fill::before { + content: '\f3a4'; +} +.bi-file-music::before { + content: '\f3a5'; +} +.bi-file-person-fill::before { + content: '\f3a6'; +} +.bi-file-person::before { + content: '\f3a7'; +} +.bi-file-play-fill::before { + content: '\f3a8'; +} +.bi-file-play::before { + content: '\f3a9'; +} +.bi-file-plus-fill::before { + content: '\f3aa'; +} +.bi-file-plus::before { + content: '\f3ab'; +} +.bi-file-post-fill::before { + content: '\f3ac'; +} +.bi-file-post::before { + content: '\f3ad'; +} +.bi-file-ppt-fill::before { + content: '\f3ae'; +} +.bi-file-ppt::before { + content: '\f3af'; +} +.bi-file-richtext-fill::before { + content: '\f3b0'; +} +.bi-file-richtext::before { + content: '\f3b1'; +} +.bi-file-ruled-fill::before { + content: '\f3b2'; +} +.bi-file-ruled::before { + content: '\f3b3'; +} +.bi-file-slides-fill::before { + content: '\f3b4'; +} +.bi-file-slides::before { + content: '\f3b5'; +} +.bi-file-spreadsheet-fill::before { + content: '\f3b6'; +} +.bi-file-spreadsheet::before { + content: '\f3b7'; +} +.bi-file-text-fill::before { + content: '\f3b8'; +} +.bi-file-text::before { + content: '\f3b9'; +} +.bi-file-word-fill::before { + content: '\f3ba'; +} +.bi-file-word::before { + content: '\f3bb'; +} +.bi-file-x-fill::before { + content: '\f3bc'; +} +.bi-file-x::before { + content: '\f3bd'; +} +.bi-file-zip-fill::before { + content: '\f3be'; +} +.bi-file-zip::before { + content: '\f3bf'; +} +.bi-file::before { + content: '\f3c0'; +} +.bi-files-alt::before { + content: '\f3c1'; +} +.bi-files::before { + content: '\f3c2'; +} +.bi-film::before { + content: '\f3c3'; +} +.bi-filter-circle-fill::before { + content: '\f3c4'; +} +.bi-filter-circle::before { + content: '\f3c5'; +} +.bi-filter-left::before { + content: '\f3c6'; +} +.bi-filter-right::before { + content: '\f3c7'; +} +.bi-filter-square-fill::before { + content: '\f3c8'; +} +.bi-filter-square::before { + content: '\f3c9'; +} +.bi-filter::before { + content: '\f3ca'; +} +.bi-flag-fill::before { + content: '\f3cb'; +} +.bi-flag::before { + content: '\f3cc'; +} +.bi-flower1::before { + content: '\f3cd'; +} +.bi-flower2::before { + content: '\f3ce'; +} +.bi-flower3::before { + content: '\f3cf'; +} +.bi-folder-check::before { + content: '\f3d0'; +} +.bi-folder-fill::before { + content: '\f3d1'; +} +.bi-folder-minus::before { + content: '\f3d2'; +} +.bi-folder-plus::before { + content: '\f3d3'; +} +.bi-folder-symlink-fill::before { + content: '\f3d4'; +} +.bi-folder-symlink::before { + content: '\f3d5'; +} +.bi-folder-x::before { + content: '\f3d6'; +} +.bi-folder::before { + content: '\f3d7'; +} +.bi-folder2-open::before { + content: '\f3d8'; +} +.bi-folder2::before { + content: '\f3d9'; +} +.bi-fonts::before { + content: '\f3da'; +} +.bi-forward-fill::before { + content: '\f3db'; +} +.bi-forward::before { + content: '\f3dc'; +} +.bi-front::before { + content: '\f3dd'; +} +.bi-fullscreen-exit::before { + content: '\f3de'; +} +.bi-fullscreen::before { + content: '\f3df'; +} +.bi-funnel-fill::before { + content: '\f3e0'; +} +.bi-funnel::before { + content: '\f3e1'; +} +.bi-gear-fill::before { + content: '\f3e2'; +} +.bi-gear-wide-connected::before { + content: '\f3e3'; +} +.bi-gear-wide::before { + content: '\f3e4'; +} +.bi-gear::before { + content: '\f3e5'; +} +.bi-gem::before { + content: '\f3e6'; +} +.bi-geo-alt-fill::before { + content: '\f3e7'; +} +.bi-geo-alt::before { + content: '\f3e8'; +} +.bi-geo-fill::before { + content: '\f3e9'; +} +.bi-geo::before { + content: '\f3ea'; +} +.bi-gift-fill::before { + content: '\f3eb'; +} +.bi-gift::before { + content: '\f3ec'; +} +.bi-github::before { + content: '\f3ed'; +} +.bi-globe::before { + content: '\f3ee'; +} +.bi-globe2::before { + content: '\f3ef'; +} +.bi-google::before { + content: '\f3f0'; +} +.bi-graph-down::before { + content: '\f3f1'; +} +.bi-graph-up::before { + content: '\f3f2'; +} +.bi-grid-1x2-fill::before { + content: '\f3f3'; +} +.bi-grid-1x2::before { + content: '\f3f4'; +} +.bi-grid-3x2-gap-fill::before { + content: '\f3f5'; +} +.bi-grid-3x2-gap::before { + content: '\f3f6'; +} +.bi-grid-3x2::before { + content: '\f3f7'; +} +.bi-grid-3x3-gap-fill::before { + content: '\f3f8'; +} +.bi-grid-3x3-gap::before { + content: '\f3f9'; +} +.bi-grid-3x3::before { + content: '\f3fa'; +} +.bi-grid-fill::before { + content: '\f3fb'; +} +.bi-grid::before { + content: '\f3fc'; +} +.bi-grip-horizontal::before { + content: '\f3fd'; +} +.bi-grip-vertical::before { + content: '\f3fe'; +} +.bi-hammer::before { + content: '\f3ff'; +} +.bi-hand-index-fill::before { + content: '\f400'; +} +.bi-hand-index-thumb-fill::before { + content: '\f401'; +} +.bi-hand-index-thumb::before { + content: '\f402'; +} +.bi-hand-index::before { + content: '\f403'; +} +.bi-hand-thumbs-down-fill::before { + content: '\f404'; +} +.bi-hand-thumbs-down::before { + content: '\f405'; +} +.bi-hand-thumbs-up-fill::before { + content: '\f406'; +} +.bi-hand-thumbs-up::before { + content: '\f407'; +} +.bi-handbag-fill::before { + content: '\f408'; +} +.bi-handbag::before { + content: '\f409'; +} +.bi-hash::before { + content: '\f40a'; +} +.bi-hdd-fill::before { + content: '\f40b'; +} +.bi-hdd-network-fill::before { + content: '\f40c'; +} +.bi-hdd-network::before { + content: '\f40d'; +} +.bi-hdd-rack-fill::before { + content: '\f40e'; +} +.bi-hdd-rack::before { + content: '\f40f'; +} +.bi-hdd-stack-fill::before { + content: '\f410'; +} +.bi-hdd-stack::before { + content: '\f411'; +} +.bi-hdd::before { + content: '\f412'; +} +.bi-headphones::before { + content: '\f413'; +} +.bi-headset::before { + content: '\f414'; +} +.bi-heart-fill::before { + content: '\f415'; +} +.bi-heart-half::before { + content: '\f416'; +} +.bi-heart::before { + content: '\f417'; +} +.bi-heptagon-fill::before { + content: '\f418'; +} +.bi-heptagon-half::before { + content: '\f419'; +} +.bi-heptagon::before { + content: '\f41a'; +} +.bi-hexagon-fill::before { + content: '\f41b'; +} +.bi-hexagon-half::before { + content: '\f41c'; +} +.bi-hexagon::before { + content: '\f41d'; +} +.bi-hourglass-bottom::before { + content: '\f41e'; +} +.bi-hourglass-split::before { + content: '\f41f'; +} +.bi-hourglass-top::before { + content: '\f420'; +} +.bi-hourglass::before { + content: '\f421'; +} +.bi-house-door-fill::before { + content: '\f422'; +} +.bi-house-door::before { + content: '\f423'; +} +.bi-house-fill::before { + content: '\f424'; +} +.bi-house::before { + content: '\f425'; +} +.bi-hr::before { + content: '\f426'; +} +.bi-hurricane::before { + content: '\f427'; +} +.bi-image-alt::before { + content: '\f428'; +} +.bi-image-fill::before { + content: '\f429'; +} +.bi-image::before { + content: '\f42a'; +} +.bi-images::before { + content: '\f42b'; +} +.bi-inbox-fill::before { + content: '\f42c'; +} +.bi-inbox::before { + content: '\f42d'; +} +.bi-inboxes-fill::before { + content: '\f42e'; +} +.bi-inboxes::before { + content: '\f42f'; +} +.bi-info-circle-fill::before { + content: '\f430'; +} +.bi-info-circle::before { + content: '\f431'; +} +.bi-info-square-fill::before { + content: '\f432'; +} +.bi-info-square::before { + content: '\f433'; +} +.bi-info::before { + content: '\f434'; +} +.bi-input-cursor-text::before { + content: '\f435'; +} +.bi-input-cursor::before { + content: '\f436'; +} +.bi-instagram::before { + content: '\f437'; +} +.bi-intersect::before { + content: '\f438'; +} +.bi-journal-album::before { + content: '\f439'; +} +.bi-journal-arrow-down::before { + content: '\f43a'; +} +.bi-journal-arrow-up::before { + content: '\f43b'; +} +.bi-journal-bookmark-fill::before { + content: '\f43c'; +} +.bi-journal-bookmark::before { + content: '\f43d'; +} +.bi-journal-check::before { + content: '\f43e'; +} +.bi-journal-code::before { + content: '\f43f'; +} +.bi-journal-medical::before { + content: '\f440'; +} +.bi-journal-minus::before { + content: '\f441'; +} +.bi-journal-plus::before { + content: '\f442'; +} +.bi-journal-richtext::before { + content: '\f443'; +} +.bi-journal-text::before { + content: '\f444'; +} +.bi-journal-x::before { + content: '\f445'; +} +.bi-journal::before { + content: '\f446'; +} +.bi-journals::before { + content: '\f447'; +} +.bi-joystick::before { + content: '\f448'; +} +.bi-justify-left::before { + content: '\f449'; +} +.bi-justify-right::before { + content: '\f44a'; +} +.bi-justify::before { + content: '\f44b'; +} +.bi-kanban-fill::before { + content: '\f44c'; +} +.bi-kanban::before { + content: '\f44d'; +} +.bi-key-fill::before { + content: '\f44e'; +} +.bi-key::before { + content: '\f44f'; +} +.bi-keyboard-fill::before { + content: '\f450'; +} +.bi-keyboard::before { + content: '\f451'; +} +.bi-ladder::before { + content: '\f452'; +} +.bi-lamp-fill::before { + content: '\f453'; +} +.bi-lamp::before { + content: '\f454'; +} +.bi-laptop-fill::before { + content: '\f455'; +} +.bi-laptop::before { + content: '\f456'; +} +.bi-layer-backward::before { + content: '\f457'; +} +.bi-layer-forward::before { + content: '\f458'; +} +.bi-layers-fill::before { + content: '\f459'; +} +.bi-layers-half::before { + content: '\f45a'; +} +.bi-layers::before { + content: '\f45b'; +} +.bi-layout-sidebar-inset-reverse::before { + content: '\f45c'; +} +.bi-layout-sidebar-inset::before { + content: '\f45d'; +} +.bi-layout-sidebar-reverse::before { + content: '\f45e'; +} +.bi-layout-sidebar::before { + content: '\f45f'; +} +.bi-layout-split::before { + content: '\f460'; +} +.bi-layout-text-sidebar-reverse::before { + content: '\f461'; +} +.bi-layout-text-sidebar::before { + content: '\f462'; +} +.bi-layout-text-window-reverse::before { + content: '\f463'; +} +.bi-layout-text-window::before { + content: '\f464'; +} +.bi-layout-three-columns::before { + content: '\f465'; +} +.bi-layout-wtf::before { + content: '\f466'; +} +.bi-life-preserver::before { + content: '\f467'; +} +.bi-lightbulb-fill::before { + content: '\f468'; +} +.bi-lightbulb-off-fill::before { + content: '\f469'; +} +.bi-lightbulb-off::before { + content: '\f46a'; +} +.bi-lightbulb::before { + content: '\f46b'; +} +.bi-lightning-charge-fill::before { + content: '\f46c'; +} +.bi-lightning-charge::before { + content: '\f46d'; +} +.bi-lightning-fill::before { + content: '\f46e'; +} +.bi-lightning::before { + content: '\f46f'; +} +.bi-link-45deg::before { + content: '\f470'; +} +.bi-link::before { + content: '\f471'; +} +.bi-linkedin::before { + content: '\f472'; +} +.bi-list-check::before { + content: '\f473'; +} +.bi-list-nested::before { + content: '\f474'; +} +.bi-list-ol::before { + content: '\f475'; +} +.bi-list-stars::before { + content: '\f476'; +} +.bi-list-task::before { + content: '\f477'; +} +.bi-list-ul::before { + content: '\f478'; +} +.bi-list::before { + content: '\f479'; +} +.bi-lock-fill::before { + content: '\f47a'; +} +.bi-lock::before { + content: '\f47b'; +} +.bi-mailbox::before { + content: '\f47c'; +} +.bi-mailbox2::before { + content: '\f47d'; +} +.bi-map-fill::before { + content: '\f47e'; +} +.bi-map::before { + content: '\f47f'; +} +.bi-markdown-fill::before { + content: '\f480'; +} +.bi-markdown::before { + content: '\f481'; +} +.bi-mask::before { + content: '\f482'; +} +.bi-megaphone-fill::before { + content: '\f483'; +} +.bi-megaphone::before { + content: '\f484'; +} +.bi-menu-app-fill::before { + content: '\f485'; +} +.bi-menu-app::before { + content: '\f486'; +} +.bi-menu-button-fill::before { + content: '\f487'; +} +.bi-menu-button-wide-fill::before { + content: '\f488'; +} +.bi-menu-button-wide::before { + content: '\f489'; +} +.bi-menu-button::before { + content: '\f48a'; +} +.bi-menu-down::before { + content: '\f48b'; +} +.bi-menu-up::before { + content: '\f48c'; +} +.bi-mic-fill::before { + content: '\f48d'; +} +.bi-mic-mute-fill::before { + content: '\f48e'; +} +.bi-mic-mute::before { + content: '\f48f'; +} +.bi-mic::before { + content: '\f490'; +} +.bi-minecart-loaded::before { + content: '\f491'; +} +.bi-minecart::before { + content: '\f492'; +} +.bi-moisture::before { + content: '\f493'; +} +.bi-moon-fill::before { + content: '\f494'; +} +.bi-moon-stars-fill::before { + content: '\f495'; +} +.bi-moon-stars::before { + content: '\f496'; +} +.bi-moon::before { + content: '\f497'; +} +.bi-mouse-fill::before { + content: '\f498'; +} +.bi-mouse::before { + content: '\f499'; +} +.bi-mouse2-fill::before { + content: '\f49a'; +} +.bi-mouse2::before { + content: '\f49b'; +} +.bi-mouse3-fill::before { + content: '\f49c'; +} +.bi-mouse3::before { + content: '\f49d'; +} +.bi-music-note-beamed::before { + content: '\f49e'; +} +.bi-music-note-list::before { + content: '\f49f'; +} +.bi-music-note::before { + content: '\f4a0'; +} +.bi-music-player-fill::before { + content: '\f4a1'; +} +.bi-music-player::before { + content: '\f4a2'; +} +.bi-newspaper::before { + content: '\f4a3'; +} +.bi-node-minus-fill::before { + content: '\f4a4'; +} +.bi-node-minus::before { + content: '\f4a5'; +} +.bi-node-plus-fill::before { + content: '\f4a6'; +} +.bi-node-plus::before { + content: '\f4a7'; +} +.bi-nut-fill::before { + content: '\f4a8'; +} +.bi-nut::before { + content: '\f4a9'; +} +.bi-octagon-fill::before { + content: '\f4aa'; +} +.bi-octagon-half::before { + content: '\f4ab'; +} +.bi-octagon::before { + content: '\f4ac'; +} +.bi-option::before { + content: '\f4ad'; +} +.bi-outlet::before { + content: '\f4ae'; +} +.bi-paint-bucket::before { + content: '\f4af'; +} +.bi-palette-fill::before { + content: '\f4b0'; +} +.bi-palette::before { + content: '\f4b1'; +} +.bi-palette2::before { + content: '\f4b2'; +} +.bi-paperclip::before { + content: '\f4b3'; +} +.bi-paragraph::before { + content: '\f4b4'; +} +.bi-patch-check-fill::before { + content: '\f4b5'; +} +.bi-patch-check::before { + content: '\f4b6'; +} +.bi-patch-exclamation-fill::before { + content: '\f4b7'; +} +.bi-patch-exclamation::before { + content: '\f4b8'; +} +.bi-patch-minus-fill::before { + content: '\f4b9'; +} +.bi-patch-minus::before { + content: '\f4ba'; +} +.bi-patch-plus-fill::before { + content: '\f4bb'; +} +.bi-patch-plus::before { + content: '\f4bc'; +} +.bi-patch-question-fill::before { + content: '\f4bd'; +} +.bi-patch-question::before { + content: '\f4be'; +} +.bi-pause-btn-fill::before { + content: '\f4bf'; +} +.bi-pause-btn::before { + content: '\f4c0'; +} +.bi-pause-circle-fill::before { + content: '\f4c1'; +} +.bi-pause-circle::before { + content: '\f4c2'; +} +.bi-pause-fill::before { + content: '\f4c3'; +} +.bi-pause::before { + content: '\f4c4'; +} +.bi-peace-fill::before { + content: '\f4c5'; +} +.bi-peace::before { + content: '\f4c6'; +} +.bi-pen-fill::before { + content: '\f4c7'; +} +.bi-pen::before { + content: '\f4c8'; +} +.bi-pencil-fill::before { + content: '\f4c9'; +} +.bi-pencil-square::before { + content: '\f4ca'; +} +.bi-pencil::before { + content: '\f4cb'; +} +.bi-pentagon-fill::before { + content: '\f4cc'; +} +.bi-pentagon-half::before { + content: '\f4cd'; +} +.bi-pentagon::before { + content: '\f4ce'; +} +.bi-people-fill::before { + content: '\f4cf'; +} +.bi-people::before { + content: '\f4d0'; +} +.bi-percent::before { + content: '\f4d1'; +} +.bi-person-badge-fill::before { + content: '\f4d2'; +} +.bi-person-badge::before { + content: '\f4d3'; +} +.bi-person-bounding-box::before { + content: '\f4d4'; +} +.bi-person-check-fill::before { + content: '\f4d5'; +} +.bi-person-check::before { + content: '\f4d6'; +} +.bi-person-circle::before { + content: '\f4d7'; +} +.bi-person-dash-fill::before { + content: '\f4d8'; +} +.bi-person-dash::before { + content: '\f4d9'; +} +.bi-person-fill::before { + content: '\f4da'; +} +.bi-person-lines-fill::before { + content: '\f4db'; +} +.bi-person-plus-fill::before { + content: '\f4dc'; +} +.bi-person-plus::before { + content: '\f4dd'; +} +.bi-person-square::before { + content: '\f4de'; +} +.bi-person-x-fill::before { + content: '\f4df'; +} +.bi-person-x::before { + content: '\f4e0'; +} +.bi-person::before { + content: '\f4e1'; +} +.bi-phone-fill::before { + content: '\f4e2'; +} +.bi-phone-landscape-fill::before { + content: '\f4e3'; +} +.bi-phone-landscape::before { + content: '\f4e4'; +} +.bi-phone-vibrate-fill::before { + content: '\f4e5'; +} +.bi-phone-vibrate::before { + content: '\f4e6'; +} +.bi-phone::before { + content: '\f4e7'; +} +.bi-pie-chart-fill::before { + content: '\f4e8'; +} +.bi-pie-chart::before { + content: '\f4e9'; +} +.bi-pin-angle-fill::before { + content: '\f4ea'; +} +.bi-pin-angle::before { + content: '\f4eb'; +} +.bi-pin-fill::before { + content: '\f4ec'; +} +.bi-pin::before { + content: '\f4ed'; +} +.bi-pip-fill::before { + content: '\f4ee'; +} +.bi-pip::before { + content: '\f4ef'; +} +.bi-play-btn-fill::before { + content: '\f4f0'; +} +.bi-play-btn::before { + content: '\f4f1'; +} +.bi-play-circle-fill::before { + content: '\f4f2'; +} +.bi-play-circle::before { + content: '\f4f3'; +} +.bi-play-fill::before { + content: '\f4f4'; +} +.bi-play::before { + content: '\f4f5'; +} +.bi-plug-fill::before { + content: '\f4f6'; +} +.bi-plug::before { + content: '\f4f7'; +} +.bi-plus-circle-dotted::before { + content: '\f4f8'; +} +.bi-plus-circle-fill::before { + content: '\f4f9'; +} +.bi-plus-circle::before { + content: '\f4fa'; +} +.bi-plus-square-dotted::before { + content: '\f4fb'; +} +.bi-plus-square-fill::before { + content: '\f4fc'; +} +.bi-plus-square::before { + content: '\f4fd'; +} +.bi-plus::before { + content: '\f4fe'; +} +.bi-power::before { + content: '\f4ff'; +} +.bi-printer-fill::before { + content: '\f500'; +} +.bi-printer::before { + content: '\f501'; +} +.bi-puzzle-fill::before { + content: '\f502'; +} +.bi-puzzle::before { + content: '\f503'; +} +.bi-question-circle-fill::before { + content: '\f504'; +} +.bi-question-circle::before { + content: '\f505'; +} +.bi-question-diamond-fill::before { + content: '\f506'; +} +.bi-question-diamond::before { + content: '\f507'; +} +.bi-question-octagon-fill::before { + content: '\f508'; +} +.bi-question-octagon::before { + content: '\f509'; +} +.bi-question-square-fill::before { + content: '\f50a'; +} +.bi-question-square::before { + content: '\f50b'; +} +.bi-question::before { + content: '\f50c'; +} +.bi-rainbow::before { + content: '\f50d'; +} +.bi-receipt-cutoff::before { + content: '\f50e'; +} +.bi-receipt::before { + content: '\f50f'; +} +.bi-reception-0::before { + content: '\f510'; +} +.bi-reception-1::before { + content: '\f511'; +} +.bi-reception-2::before { + content: '\f512'; +} +.bi-reception-3::before { + content: '\f513'; +} +.bi-reception-4::before { + content: '\f514'; +} +.bi-record-btn-fill::before { + content: '\f515'; +} +.bi-record-btn::before { + content: '\f516'; +} +.bi-record-circle-fill::before { + content: '\f517'; +} +.bi-record-circle::before { + content: '\f518'; +} +.bi-record-fill::before { + content: '\f519'; +} +.bi-record::before { + content: '\f51a'; +} +.bi-record2-fill::before { + content: '\f51b'; +} +.bi-record2::before { + content: '\f51c'; +} +.bi-reply-all-fill::before { + content: '\f51d'; +} +.bi-reply-all::before { + content: '\f51e'; +} +.bi-reply-fill::before { + content: '\f51f'; +} +.bi-reply::before { + content: '\f520'; +} +.bi-rss-fill::before { + content: '\f521'; +} +.bi-rss::before { + content: '\f522'; +} +.bi-rulers::before { + content: '\f523'; +} +.bi-save-fill::before { + content: '\f524'; +} +.bi-save::before { + content: '\f525'; +} +.bi-save2-fill::before { + content: '\f526'; +} +.bi-save2::before { + content: '\f527'; +} +.bi-scissors::before { + content: '\f528'; +} +.bi-screwdriver::before { + content: '\f529'; +} +.bi-search::before { + content: '\f52a'; +} +.bi-segmented-nav::before { + content: '\f52b'; +} +.bi-server::before { + content: '\f52c'; +} +.bi-share-fill::before { + content: '\f52d'; +} +.bi-share::before { + content: '\f52e'; +} +.bi-shield-check::before { + content: '\f52f'; +} +.bi-shield-exclamation::before { + content: '\f530'; +} +.bi-shield-fill-check::before { + content: '\f531'; +} +.bi-shield-fill-exclamation::before { + content: '\f532'; +} +.bi-shield-fill-minus::before { + content: '\f533'; +} +.bi-shield-fill-plus::before { + content: '\f534'; +} +.bi-shield-fill-x::before { + content: '\f535'; +} +.bi-shield-fill::before { + content: '\f536'; +} +.bi-shield-lock-fill::before { + content: '\f537'; +} +.bi-shield-lock::before { + content: '\f538'; +} +.bi-shield-minus::before { + content: '\f539'; +} +.bi-shield-plus::before { + content: '\f53a'; +} +.bi-shield-shaded::before { + content: '\f53b'; +} +.bi-shield-slash-fill::before { + content: '\f53c'; +} +.bi-shield-slash::before { + content: '\f53d'; +} +.bi-shield-x::before { + content: '\f53e'; +} +.bi-shield::before { + content: '\f53f'; +} +.bi-shift-fill::before { + content: '\f540'; +} +.bi-shift::before { + content: '\f541'; +} +.bi-shop-window::before { + content: '\f542'; +} +.bi-shop::before { + content: '\f543'; +} +.bi-shuffle::before { + content: '\f544'; +} +.bi-signpost-2-fill::before { + content: '\f545'; +} +.bi-signpost-2::before { + content: '\f546'; +} +.bi-signpost-fill::before { + content: '\f547'; +} +.bi-signpost-split-fill::before { + content: '\f548'; +} +.bi-signpost-split::before { + content: '\f549'; +} +.bi-signpost::before { + content: '\f54a'; +} +.bi-sim-fill::before { + content: '\f54b'; +} +.bi-sim::before { + content: '\f54c'; +} +.bi-skip-backward-btn-fill::before { + content: '\f54d'; +} +.bi-skip-backward-btn::before { + content: '\f54e'; +} +.bi-skip-backward-circle-fill::before { + content: '\f54f'; +} +.bi-skip-backward-circle::before { + content: '\f550'; +} +.bi-skip-backward-fill::before { + content: '\f551'; +} +.bi-skip-backward::before { + content: '\f552'; +} +.bi-skip-end-btn-fill::before { + content: '\f553'; +} +.bi-skip-end-btn::before { + content: '\f554'; +} +.bi-skip-end-circle-fill::before { + content: '\f555'; +} +.bi-skip-end-circle::before { + content: '\f556'; +} +.bi-skip-end-fill::before { + content: '\f557'; +} +.bi-skip-end::before { + content: '\f558'; +} +.bi-skip-forward-btn-fill::before { + content: '\f559'; +} +.bi-skip-forward-btn::before { + content: '\f55a'; +} +.bi-skip-forward-circle-fill::before { + content: '\f55b'; +} +.bi-skip-forward-circle::before { + content: '\f55c'; +} +.bi-skip-forward-fill::before { + content: '\f55d'; +} +.bi-skip-forward::before { + content: '\f55e'; +} +.bi-skip-start-btn-fill::before { + content: '\f55f'; +} +.bi-skip-start-btn::before { + content: '\f560'; +} +.bi-skip-start-circle-fill::before { + content: '\f561'; +} +.bi-skip-start-circle::before { + content: '\f562'; +} +.bi-skip-start-fill::before { + content: '\f563'; +} +.bi-skip-start::before { + content: '\f564'; +} +.bi-slack::before { + content: '\f565'; +} +.bi-slash-circle-fill::before { + content: '\f566'; +} +.bi-slash-circle::before { + content: '\f567'; +} +.bi-slash-square-fill::before { + content: '\f568'; +} +.bi-slash-square::before { + content: '\f569'; +} +.bi-slash::before { + content: '\f56a'; +} +.bi-sliders::before { + content: '\f56b'; +} +.bi-smartwatch::before { + content: '\f56c'; +} +.bi-snow::before { + content: '\f56d'; +} +.bi-snow2::before { + content: '\f56e'; +} +.bi-snow3::before { + content: '\f56f'; +} +.bi-sort-alpha-down-alt::before { + content: '\f570'; +} +.bi-sort-alpha-down::before { + content: '\f571'; +} +.bi-sort-alpha-up-alt::before { + content: '\f572'; +} +.bi-sort-alpha-up::before { + content: '\f573'; +} +.bi-sort-down-alt::before { + content: '\f574'; +} +.bi-sort-down::before { + content: '\f575'; +} +.bi-sort-numeric-down-alt::before { + content: '\f576'; +} +.bi-sort-numeric-down::before { + content: '\f577'; +} +.bi-sort-numeric-up-alt::before { + content: '\f578'; +} +.bi-sort-numeric-up::before { + content: '\f579'; +} +.bi-sort-up-alt::before { + content: '\f57a'; +} +.bi-sort-up::before { + content: '\f57b'; +} +.bi-soundwave::before { + content: '\f57c'; +} +.bi-speaker-fill::before { + content: '\f57d'; +} +.bi-speaker::before { + content: '\f57e'; +} +.bi-speedometer::before { + content: '\f57f'; +} +.bi-speedometer2::before { + content: '\f580'; +} +.bi-spellcheck::before { + content: '\f581'; +} +.bi-square-fill::before { + content: '\f582'; +} +.bi-square-half::before { + content: '\f583'; +} +.bi-square::before { + content: '\f584'; +} +.bi-stack::before { + content: '\f585'; +} +.bi-star-fill::before { + content: '\f586'; +} +.bi-star-half::before { + content: '\f587'; +} +.bi-star::before { + content: '\f588'; +} +.bi-stars::before { + content: '\f589'; +} +.bi-stickies-fill::before { + content: '\f58a'; +} +.bi-stickies::before { + content: '\f58b'; +} +.bi-sticky-fill::before { + content: '\f58c'; +} +.bi-sticky::before { + content: '\f58d'; +} +.bi-stop-btn-fill::before { + content: '\f58e'; +} +.bi-stop-btn::before { + content: '\f58f'; +} +.bi-stop-circle-fill::before { + content: '\f590'; +} +.bi-stop-circle::before { + content: '\f591'; +} +.bi-stop-fill::before { + content: '\f592'; +} +.bi-stop::before { + content: '\f593'; +} +.bi-stoplights-fill::before { + content: '\f594'; +} +.bi-stoplights::before { + content: '\f595'; +} +.bi-stopwatch-fill::before { + content: '\f596'; +} +.bi-stopwatch::before { + content: '\f597'; +} +.bi-subtract::before { + content: '\f598'; +} +.bi-suit-club-fill::before { + content: '\f599'; +} +.bi-suit-club::before { + content: '\f59a'; +} +.bi-suit-diamond-fill::before { + content: '\f59b'; +} +.bi-suit-diamond::before { + content: '\f59c'; +} +.bi-suit-heart-fill::before { + content: '\f59d'; +} +.bi-suit-heart::before { + content: '\f59e'; +} +.bi-suit-spade-fill::before { + content: '\f59f'; +} +.bi-suit-spade::before { + content: '\f5a0'; +} +.bi-sun-fill::before { + content: '\f5a1'; +} +.bi-sun::before { + content: '\f5a2'; +} +.bi-sunglasses::before { + content: '\f5a3'; +} +.bi-sunrise-fill::before { + content: '\f5a4'; +} +.bi-sunrise::before { + content: '\f5a5'; +} +.bi-sunset-fill::before { + content: '\f5a6'; +} +.bi-sunset::before { + content: '\f5a7'; +} +.bi-symmetry-horizontal::before { + content: '\f5a8'; +} +.bi-symmetry-vertical::before { + content: '\f5a9'; +} +.bi-table::before { + content: '\f5aa'; +} +.bi-tablet-fill::before { + content: '\f5ab'; +} +.bi-tablet-landscape-fill::before { + content: '\f5ac'; +} +.bi-tablet-landscape::before { + content: '\f5ad'; +} +.bi-tablet::before { + content: '\f5ae'; +} +.bi-tag-fill::before { + content: '\f5af'; +} +.bi-tag::before { + content: '\f5b0'; +} +.bi-tags-fill::before { + content: '\f5b1'; +} +.bi-tags::before { + content: '\f5b2'; +} +.bi-telegram::before { + content: '\f5b3'; +} +.bi-telephone-fill::before { + content: '\f5b4'; +} +.bi-telephone-forward-fill::before { + content: '\f5b5'; +} +.bi-telephone-forward::before { + content: '\f5b6'; +} +.bi-telephone-inbound-fill::before { + content: '\f5b7'; +} +.bi-telephone-inbound::before { + content: '\f5b8'; +} +.bi-telephone-minus-fill::before { + content: '\f5b9'; +} +.bi-telephone-minus::before { + content: '\f5ba'; +} +.bi-telephone-outbound-fill::before { + content: '\f5bb'; +} +.bi-telephone-outbound::before { + content: '\f5bc'; +} +.bi-telephone-plus-fill::before { + content: '\f5bd'; +} +.bi-telephone-plus::before { + content: '\f5be'; +} +.bi-telephone-x-fill::before { + content: '\f5bf'; +} +.bi-telephone-x::before { + content: '\f5c0'; +} +.bi-telephone::before { + content: '\f5c1'; +} +.bi-terminal-fill::before { + content: '\f5c2'; +} +.bi-terminal::before { + content: '\f5c3'; +} +.bi-text-center::before { + content: '\f5c4'; +} +.bi-text-indent-left::before { + content: '\f5c5'; +} +.bi-text-indent-right::before { + content: '\f5c6'; +} +.bi-text-left::before { + content: '\f5c7'; +} +.bi-text-paragraph::before { + content: '\f5c8'; +} +.bi-text-right::before { + content: '\f5c9'; +} +.bi-textarea-resize::before { + content: '\f5ca'; +} +.bi-textarea-t::before { + content: '\f5cb'; +} +.bi-textarea::before { + content: '\f5cc'; +} +.bi-thermometer-half::before { + content: '\f5cd'; +} +.bi-thermometer-high::before { + content: '\f5ce'; +} +.bi-thermometer-low::before { + content: '\f5cf'; +} +.bi-thermometer-snow::before { + content: '\f5d0'; +} +.bi-thermometer-sun::before { + content: '\f5d1'; +} +.bi-thermometer::before { + content: '\f5d2'; +} +.bi-three-dots-vertical::before { + content: '\f5d3'; +} +.bi-three-dots::before { + content: '\f5d4'; +} +.bi-toggle-off::before { + content: '\f5d5'; +} +.bi-toggle-on::before { + content: '\f5d6'; +} +.bi-toggle2-off::before { + content: '\f5d7'; +} +.bi-toggle2-on::before { + content: '\f5d8'; +} +.bi-toggles::before { + content: '\f5d9'; +} +.bi-toggles2::before { + content: '\f5da'; +} +.bi-tools::before { + content: '\f5db'; +} +.bi-tornado::before { + content: '\f5dc'; +} +.bi-trash-fill::before { + content: '\f5dd'; +} +.bi-trash::before { + content: '\f5de'; +} +.bi-trash2-fill::before { + content: '\f5df'; +} +.bi-trash2::before { + content: '\f5e0'; +} +.bi-tree-fill::before { + content: '\f5e1'; +} +.bi-tree::before { + content: '\f5e2'; +} +.bi-triangle-fill::before { + content: '\f5e3'; +} +.bi-triangle-half::before { + content: '\f5e4'; +} +.bi-triangle::before { + content: '\f5e5'; +} +.bi-trophy-fill::before { + content: '\f5e6'; +} +.bi-trophy::before { + content: '\f5e7'; +} +.bi-tropical-storm::before { + content: '\f5e8'; +} +.bi-truck-flatbed::before { + content: '\f5e9'; +} +.bi-truck::before { + content: '\f5ea'; +} +.bi-tsunami::before { + content: '\f5eb'; +} +.bi-tv-fill::before { + content: '\f5ec'; +} +.bi-tv::before { + content: '\f5ed'; +} +.bi-twitch::before { + content: '\f5ee'; +} +.bi-twitter::before { + content: '\f5ef'; +} +.bi-type-bold::before { + content: '\f5f0'; +} +.bi-type-h1::before { + content: '\f5f1'; +} +.bi-type-h2::before { + content: '\f5f2'; +} +.bi-type-h3::before { + content: '\f5f3'; +} +.bi-type-italic::before { + content: '\f5f4'; +} +.bi-type-strikethrough::before { + content: '\f5f5'; +} +.bi-type-underline::before { + content: '\f5f6'; +} +.bi-type::before { + content: '\f5f7'; +} +.bi-ui-checks-grid::before { + content: '\f5f8'; +} +.bi-ui-checks::before { + content: '\f5f9'; +} +.bi-ui-radios-grid::before { + content: '\f5fa'; +} +.bi-ui-radios::before { + content: '\f5fb'; +} +.bi-umbrella-fill::before { + content: '\f5fc'; +} +.bi-umbrella::before { + content: '\f5fd'; +} +.bi-union::before { + content: '\f5fe'; +} +.bi-unlock-fill::before { + content: '\f5ff'; +} +.bi-unlock::before { + content: '\f600'; +} +.bi-upc-scan::before { + content: '\f601'; +} +.bi-upc::before { + content: '\f602'; +} +.bi-upload::before { + content: '\f603'; +} +.bi-vector-pen::before { + content: '\f604'; +} +.bi-view-list::before { + content: '\f605'; +} +.bi-view-stacked::before { + content: '\f606'; +} +.bi-vinyl-fill::before { + content: '\f607'; +} +.bi-vinyl::before { + content: '\f608'; +} +.bi-voicemail::before { + content: '\f609'; +} +.bi-volume-down-fill::before { + content: '\f60a'; +} +.bi-volume-down::before { + content: '\f60b'; +} +.bi-volume-mute-fill::before { + content: '\f60c'; +} +.bi-volume-mute::before { + content: '\f60d'; +} +.bi-volume-off-fill::before { + content: '\f60e'; +} +.bi-volume-off::before { + content: '\f60f'; +} +.bi-volume-up-fill::before { + content: '\f610'; +} +.bi-volume-up::before { + content: '\f611'; +} +.bi-vr::before { + content: '\f612'; +} +.bi-wallet-fill::before { + content: '\f613'; +} +.bi-wallet::before { + content: '\f614'; +} +.bi-wallet2::before { + content: '\f615'; +} +.bi-watch::before { + content: '\f616'; +} +.bi-water::before { + content: '\f617'; +} +.bi-whatsapp::before { + content: '\f618'; +} +.bi-wifi-1::before { + content: '\f619'; +} +.bi-wifi-2::before { + content: '\f61a'; +} +.bi-wifi-off::before { + content: '\f61b'; +} +.bi-wifi::before { + content: '\f61c'; +} +.bi-wind::before { + content: '\f61d'; +} +.bi-window-dock::before { + content: '\f61e'; +} +.bi-window-sidebar::before { + content: '\f61f'; +} +.bi-window::before { + content: '\f620'; +} +.bi-wrench::before { + content: '\f621'; +} +.bi-x-circle-fill::before { + content: '\f622'; +} +.bi-x-circle::before { + content: '\f623'; +} +.bi-x-diamond-fill::before { + content: '\f624'; +} +.bi-x-diamond::before { + content: '\f625'; +} +.bi-x-octagon-fill::before { + content: '\f626'; +} +.bi-x-octagon::before { + content: '\f627'; +} +.bi-x-square-fill::before { + content: '\f628'; +} +.bi-x-square::before { + content: '\f629'; +} +.bi-x::before { + content: '\f62a'; +} +.bi-youtube::before { + content: '\f62b'; +} +.bi-zoom-in::before { + content: '\f62c'; +} +.bi-zoom-out::before { + content: '\f62d'; +} +.bi-bank::before { + content: '\f62e'; +} +.bi-bank2::before { + content: '\f62f'; +} +.bi-bell-slash-fill::before { + content: '\f630'; +} +.bi-bell-slash::before { + content: '\f631'; +} +.bi-cash-coin::before { + content: '\f632'; +} +.bi-check-lg::before { + content: '\f633'; +} +.bi-coin::before { + content: '\f634'; +} +.bi-currency-bitcoin::before { + content: '\f635'; +} +.bi-currency-dollar::before { + content: '\f636'; +} +.bi-currency-euro::before { + content: '\f637'; +} +.bi-currency-exchange::before { + content: '\f638'; +} +.bi-currency-pound::before { + content: '\f639'; +} +.bi-currency-yen::before { + content: '\f63a'; +} +.bi-dash-lg::before { + content: '\f63b'; +} +.bi-exclamation-lg::before { + content: '\f63c'; +} +.bi-file-earmark-pdf-fill::before { + content: '\f63d'; +} +.bi-file-earmark-pdf::before { + content: '\f63e'; +} +.bi-file-pdf-fill::before { + content: '\f63f'; +} +.bi-file-pdf::before { + content: '\f640'; +} +.bi-gender-ambiguous::before { + content: '\f641'; +} +.bi-gender-female::before { + content: '\f642'; +} +.bi-gender-male::before { + content: '\f643'; +} +.bi-gender-trans::before { + content: '\f644'; +} +.bi-headset-vr::before { + content: '\f645'; +} +.bi-info-lg::before { + content: '\f646'; +} +.bi-mastodon::before { + content: '\f647'; +} +.bi-messenger::before { + content: '\f648'; +} +.bi-piggy-bank-fill::before { + content: '\f649'; +} +.bi-piggy-bank::before { + content: '\f64a'; +} +.bi-pin-map-fill::before { + content: '\f64b'; +} +.bi-pin-map::before { + content: '\f64c'; +} +.bi-plus-lg::before { + content: '\f64d'; +} +.bi-question-lg::before { + content: '\f64e'; +} +.bi-recycle::before { + content: '\f64f'; +} +.bi-reddit::before { + content: '\f650'; +} +.bi-safe-fill::before { + content: '\f651'; +} +.bi-safe2-fill::before { + content: '\f652'; +} +.bi-safe2::before { + content: '\f653'; +} +.bi-sd-card-fill::before { + content: '\f654'; +} +.bi-sd-card::before { + content: '\f655'; +} +.bi-skype::before { + content: '\f656'; +} +.bi-slash-lg::before { + content: '\f657'; +} +.bi-translate::before { + content: '\f658'; +} +.bi-x-lg::before { + content: '\f659'; +} +.bi-safe::before { + content: '\f65a'; +} +.bi-apple::before { + content: '\f65b'; +} +.bi-microsoft::before { + content: '\f65d'; +} +.bi-windows::before { + content: '\f65e'; +} +.bi-behance::before { + content: '\f65c'; +} +.bi-dribbble::before { + content: '\f65f'; +} +.bi-line::before { + content: '\f660'; +} +.bi-medium::before { + content: '\f661'; +} +.bi-paypal::before { + content: '\f662'; +} +.bi-pinterest::before { + content: '\f663'; +} +.bi-signal::before { + content: '\f664'; +} +.bi-snapchat::before { + content: '\f665'; +} +.bi-spotify::before { + content: '\f666'; +} +.bi-stack-overflow::before { + content: '\f667'; +} +.bi-strava::before { + content: '\f668'; +} +.bi-wordpress::before { + content: '\f669'; +} +.bi-vimeo::before { + content: '\f66a'; +} +.bi-activity::before { + content: '\f66b'; +} +.bi-easel2-fill::before { + content: '\f66c'; +} +.bi-easel2::before { + content: '\f66d'; +} +.bi-easel3-fill::before { + content: '\f66e'; +} +.bi-easel3::before { + content: '\f66f'; +} +.bi-fan::before { + content: '\f670'; +} +.bi-fingerprint::before { + content: '\f671'; +} +.bi-graph-down-arrow::before { + content: '\f672'; +} +.bi-graph-up-arrow::before { + content: '\f673'; +} +.bi-hypnotize::before { + content: '\f674'; +} +.bi-magic::before { + content: '\f675'; +} +.bi-person-rolodex::before { + content: '\f676'; +} +.bi-person-video::before { + content: '\f677'; +} +.bi-person-video2::before { + content: '\f678'; +} +.bi-person-video3::before { + content: '\f679'; +} +.bi-person-workspace::before { + content: '\f67a'; +} +.bi-radioactive::before { + content: '\f67b'; +} +.bi-webcam-fill::before { + content: '\f67c'; +} +.bi-webcam::before { + content: '\f67d'; +} +.bi-yin-yang::before { + content: '\f67e'; +} +.bi-bandaid-fill::before { + content: '\f680'; +} +.bi-bandaid::before { + content: '\f681'; +} +.bi-bluetooth::before { + content: '\f682'; +} +.bi-body-text::before { + content: '\f683'; +} +.bi-boombox::before { + content: '\f684'; +} +.bi-boxes::before { + content: '\f685'; +} +.bi-dpad-fill::before { + content: '\f686'; +} +.bi-dpad::before { + content: '\f687'; +} +.bi-ear-fill::before { + content: '\f688'; +} +.bi-ear::before { + content: '\f689'; +} +.bi-envelope-check-fill::before { + content: '\f68b'; +} +.bi-envelope-check::before { + content: '\f68c'; +} +.bi-envelope-dash-fill::before { + content: '\f68e'; +} +.bi-envelope-dash::before { + content: '\f68f'; +} +.bi-envelope-exclamation-fill::before { + content: '\f691'; +} +.bi-envelope-exclamation::before { + content: '\f692'; +} +.bi-envelope-plus-fill::before { + content: '\f693'; +} +.bi-envelope-plus::before { + content: '\f694'; +} +.bi-envelope-slash-fill::before { + content: '\f696'; +} +.bi-envelope-slash::before { + content: '\f697'; +} +.bi-envelope-x-fill::before { + content: '\f699'; +} +.bi-envelope-x::before { + content: '\f69a'; +} +.bi-explicit-fill::before { + content: '\f69b'; +} +.bi-explicit::before { + content: '\f69c'; +} +.bi-git::before { + content: '\f69d'; +} +.bi-infinity::before { + content: '\f69e'; +} +.bi-list-columns-reverse::before { + content: '\f69f'; +} +.bi-list-columns::before { + content: '\f6a0'; +} +.bi-meta::before { + content: '\f6a1'; +} +.bi-nintendo-switch::before { + content: '\f6a4'; +} +.bi-pc-display-horizontal::before { + content: '\f6a5'; +} +.bi-pc-display::before { + content: '\f6a6'; +} +.bi-pc-horizontal::before { + content: '\f6a7'; +} +.bi-pc::before { + content: '\f6a8'; +} +.bi-playstation::before { + content: '\f6a9'; +} +.bi-plus-slash-minus::before { + content: '\f6aa'; +} +.bi-projector-fill::before { + content: '\f6ab'; +} +.bi-projector::before { + content: '\f6ac'; +} +.bi-qr-code-scan::before { + content: '\f6ad'; +} +.bi-qr-code::before { + content: '\f6ae'; +} +.bi-quora::before { + content: '\f6af'; +} +.bi-quote::before { + content: '\f6b0'; +} +.bi-robot::before { + content: '\f6b1'; +} +.bi-send-check-fill::before { + content: '\f6b2'; +} +.bi-send-check::before { + content: '\f6b3'; +} +.bi-send-dash-fill::before { + content: '\f6b4'; +} +.bi-send-dash::before { + content: '\f6b5'; +} +.bi-send-exclamation-fill::before { + content: '\f6b7'; +} +.bi-send-exclamation::before { + content: '\f6b8'; +} +.bi-send-fill::before { + content: '\f6b9'; +} +.bi-send-plus-fill::before { + content: '\f6ba'; +} +.bi-send-plus::before { + content: '\f6bb'; +} +.bi-send-slash-fill::before { + content: '\f6bc'; +} +.bi-send-slash::before { + content: '\f6bd'; +} +.bi-send-x-fill::before { + content: '\f6be'; +} +.bi-send-x::before { + content: '\f6bf'; +} +.bi-send::before { + content: '\f6c0'; +} +.bi-steam::before { + content: '\f6c1'; +} +.bi-terminal-dash::before { + content: '\f6c3'; +} +.bi-terminal-plus::before { + content: '\f6c4'; +} +.bi-terminal-split::before { + content: '\f6c5'; +} +.bi-ticket-detailed-fill::before { + content: '\f6c6'; +} +.bi-ticket-detailed::before { + content: '\f6c7'; +} +.bi-ticket-fill::before { + content: '\f6c8'; +} +.bi-ticket-perforated-fill::before { + content: '\f6c9'; +} +.bi-ticket-perforated::before { + content: '\f6ca'; +} +.bi-ticket::before { + content: '\f6cb'; +} +.bi-tiktok::before { + content: '\f6cc'; +} +.bi-window-dash::before { + content: '\f6cd'; +} +.bi-window-desktop::before { + content: '\f6ce'; +} +.bi-window-fullscreen::before { + content: '\f6cf'; +} +.bi-window-plus::before { + content: '\f6d0'; +} +.bi-window-split::before { + content: '\f6d1'; +} +.bi-window-stack::before { + content: '\f6d2'; +} +.bi-window-x::before { + content: '\f6d3'; +} +.bi-xbox::before { + content: '\f6d4'; +} +.bi-ethernet::before { + content: '\f6d5'; +} +.bi-hdmi-fill::before { + content: '\f6d6'; +} +.bi-hdmi::before { + content: '\f6d7'; +} +.bi-usb-c-fill::before { + content: '\f6d8'; +} +.bi-usb-c::before { + content: '\f6d9'; +} +.bi-usb-fill::before { + content: '\f6da'; +} +.bi-usb-plug-fill::before { + content: '\f6db'; +} +.bi-usb-plug::before { + content: '\f6dc'; +} +.bi-usb-symbol::before { + content: '\f6dd'; +} +.bi-usb::before { + content: '\f6de'; +} +.bi-boombox-fill::before { + content: '\f6df'; +} +.bi-displayport::before { + content: '\f6e1'; +} +.bi-gpu-card::before { + content: '\f6e2'; +} +.bi-memory::before { + content: '\f6e3'; +} +.bi-modem-fill::before { + content: '\f6e4'; +} +.bi-modem::before { + content: '\f6e5'; +} +.bi-motherboard-fill::before { + content: '\f6e6'; +} +.bi-motherboard::before { + content: '\f6e7'; +} +.bi-optical-audio-fill::before { + content: '\f6e8'; +} +.bi-optical-audio::before { + content: '\f6e9'; +} +.bi-pci-card::before { + content: '\f6ea'; +} +.bi-router-fill::before { + content: '\f6eb'; +} +.bi-router::before { + content: '\f6ec'; +} +.bi-thunderbolt-fill::before { + content: '\f6ef'; +} +.bi-thunderbolt::before { + content: '\f6f0'; +} +.bi-usb-drive-fill::before { + content: '\f6f1'; +} +.bi-usb-drive::before { + content: '\f6f2'; +} +.bi-usb-micro-fill::before { + content: '\f6f3'; +} +.bi-usb-micro::before { + content: '\f6f4'; +} +.bi-usb-mini-fill::before { + content: '\f6f5'; +} +.bi-usb-mini::before { + content: '\f6f6'; +} +.bi-cloud-haze2::before { + content: '\f6f7'; +} +.bi-device-hdd-fill::before { + content: '\f6f8'; +} +.bi-device-hdd::before { + content: '\f6f9'; +} +.bi-device-ssd-fill::before { + content: '\f6fa'; +} +.bi-device-ssd::before { + content: '\f6fb'; +} +.bi-displayport-fill::before { + content: '\f6fc'; +} +.bi-mortarboard-fill::before { + content: '\f6fd'; +} +.bi-mortarboard::before { + content: '\f6fe'; +} +.bi-terminal-x::before { + content: '\f6ff'; +} +.bi-arrow-through-heart-fill::before { + content: '\f700'; +} +.bi-arrow-through-heart::before { + content: '\f701'; +} +.bi-badge-sd-fill::before { + content: '\f702'; +} +.bi-badge-sd::before { + content: '\f703'; +} +.bi-bag-heart-fill::before { + content: '\f704'; +} +.bi-bag-heart::before { + content: '\f705'; +} +.bi-balloon-fill::before { + content: '\f706'; +} +.bi-balloon-heart-fill::before { + content: '\f707'; +} +.bi-balloon-heart::before { + content: '\f708'; +} +.bi-balloon::before { + content: '\f709'; +} +.bi-box2-fill::before { + content: '\f70a'; +} +.bi-box2-heart-fill::before { + content: '\f70b'; +} +.bi-box2-heart::before { + content: '\f70c'; +} +.bi-box2::before { + content: '\f70d'; +} +.bi-braces-asterisk::before { + content: '\f70e'; +} +.bi-calendar-heart-fill::before { + content: '\f70f'; +} +.bi-calendar-heart::before { + content: '\f710'; +} +.bi-calendar2-heart-fill::before { + content: '\f711'; +} +.bi-calendar2-heart::before { + content: '\f712'; +} +.bi-chat-heart-fill::before { + content: '\f713'; +} +.bi-chat-heart::before { + content: '\f714'; +} +.bi-chat-left-heart-fill::before { + content: '\f715'; +} +.bi-chat-left-heart::before { + content: '\f716'; +} +.bi-chat-right-heart-fill::before { + content: '\f717'; +} +.bi-chat-right-heart::before { + content: '\f718'; +} +.bi-chat-square-heart-fill::before { + content: '\f719'; +} +.bi-chat-square-heart::before { + content: '\f71a'; +} +.bi-clipboard-check-fill::before { + content: '\f71b'; +} +.bi-clipboard-data-fill::before { + content: '\f71c'; +} +.bi-clipboard-fill::before { + content: '\f71d'; +} +.bi-clipboard-heart-fill::before { + content: '\f71e'; +} +.bi-clipboard-heart::before { + content: '\f71f'; +} +.bi-clipboard-minus-fill::before { + content: '\f720'; +} +.bi-clipboard-plus-fill::before { + content: '\f721'; +} +.bi-clipboard-pulse::before { + content: '\f722'; +} +.bi-clipboard-x-fill::before { + content: '\f723'; +} +.bi-clipboard2-check-fill::before { + content: '\f724'; +} +.bi-clipboard2-check::before { + content: '\f725'; +} +.bi-clipboard2-data-fill::before { + content: '\f726'; +} +.bi-clipboard2-data::before { + content: '\f727'; +} +.bi-clipboard2-fill::before { + content: '\f728'; +} +.bi-clipboard2-heart-fill::before { + content: '\f729'; +} +.bi-clipboard2-heart::before { + content: '\f72a'; +} +.bi-clipboard2-minus-fill::before { + content: '\f72b'; +} +.bi-clipboard2-minus::before { + content: '\f72c'; +} +.bi-clipboard2-plus-fill::before { + content: '\f72d'; +} +.bi-clipboard2-plus::before { + content: '\f72e'; +} +.bi-clipboard2-pulse-fill::before { + content: '\f72f'; +} +.bi-clipboard2-pulse::before { + content: '\f730'; +} +.bi-clipboard2-x-fill::before { + content: '\f731'; +} +.bi-clipboard2-x::before { + content: '\f732'; +} +.bi-clipboard2::before { + content: '\f733'; +} +.bi-emoji-kiss-fill::before { + content: '\f734'; +} +.bi-emoji-kiss::before { + content: '\f735'; +} +.bi-envelope-heart-fill::before { + content: '\f736'; +} +.bi-envelope-heart::before { + content: '\f737'; +} +.bi-envelope-open-heart-fill::before { + content: '\f738'; +} +.bi-envelope-open-heart::before { + content: '\f739'; +} +.bi-envelope-paper-fill::before { + content: '\f73a'; +} +.bi-envelope-paper-heart-fill::before { + content: '\f73b'; +} +.bi-envelope-paper-heart::before { + content: '\f73c'; +} +.bi-envelope-paper::before { + content: '\f73d'; +} +.bi-filetype-aac::before { + content: '\f73e'; +} +.bi-filetype-ai::before { + content: '\f73f'; +} +.bi-filetype-bmp::before { + content: '\f740'; +} +.bi-filetype-cs::before { + content: '\f741'; +} +.bi-filetype-css::before { + content: '\f742'; +} +.bi-filetype-csv::before { + content: '\f743'; +} +.bi-filetype-doc::before { + content: '\f744'; +} +.bi-filetype-docx::before { + content: '\f745'; +} +.bi-filetype-exe::before { + content: '\f746'; +} +.bi-filetype-gif::before { + content: '\f747'; +} +.bi-filetype-heic::before { + content: '\f748'; +} +.bi-filetype-html::before { + content: '\f749'; +} +.bi-filetype-java::before { + content: '\f74a'; +} +.bi-filetype-jpg::before { + content: '\f74b'; +} +.bi-filetype-js::before { + content: '\f74c'; +} +.bi-filetype-jsx::before { + content: '\f74d'; +} +.bi-filetype-key::before { + content: '\f74e'; +} +.bi-filetype-m4p::before { + content: '\f74f'; +} +.bi-filetype-md::before { + content: '\f750'; +} +.bi-filetype-mdx::before { + content: '\f751'; +} +.bi-filetype-mov::before { + content: '\f752'; +} +.bi-filetype-mp3::before { + content: '\f753'; +} +.bi-filetype-mp4::before { + content: '\f754'; +} +.bi-filetype-otf::before { + content: '\f755'; +} +.bi-filetype-pdf::before { + content: '\f756'; +} +.bi-filetype-php::before { + content: '\f757'; +} +.bi-filetype-png::before { + content: '\f758'; +} +.bi-filetype-ppt::before { + content: '\f75a'; +} +.bi-filetype-psd::before { + content: '\f75b'; +} +.bi-filetype-py::before { + content: '\f75c'; +} +.bi-filetype-raw::before { + content: '\f75d'; +} +.bi-filetype-rb::before { + content: '\f75e'; +} +.bi-filetype-sass::before { + content: '\f75f'; +} +.bi-filetype-scss::before { + content: '\f760'; +} +.bi-filetype-sh::before { + content: '\f761'; +} +.bi-filetype-svg::before { + content: '\f762'; +} +.bi-filetype-tiff::before { + content: '\f763'; +} +.bi-filetype-tsx::before { + content: '\f764'; +} +.bi-filetype-ttf::before { + content: '\f765'; +} +.bi-filetype-txt::before { + content: '\f766'; +} +.bi-filetype-wav::before { + content: '\f767'; +} +.bi-filetype-woff::before { + content: '\f768'; +} +.bi-filetype-xls::before { + content: '\f76a'; +} +.bi-filetype-xml::before { + content: '\f76b'; +} +.bi-filetype-yml::before { + content: '\f76c'; +} +.bi-heart-arrow::before { + content: '\f76d'; +} +.bi-heart-pulse-fill::before { + content: '\f76e'; +} +.bi-heart-pulse::before { + content: '\f76f'; +} +.bi-heartbreak-fill::before { + content: '\f770'; +} +.bi-heartbreak::before { + content: '\f771'; +} +.bi-hearts::before { + content: '\f772'; +} +.bi-hospital-fill::before { + content: '\f773'; +} +.bi-hospital::before { + content: '\f774'; +} +.bi-house-heart-fill::before { + content: '\f775'; +} +.bi-house-heart::before { + content: '\f776'; +} +.bi-incognito::before { + content: '\f777'; +} +.bi-magnet-fill::before { + content: '\f778'; +} +.bi-magnet::before { + content: '\f779'; +} +.bi-person-heart::before { + content: '\f77a'; +} +.bi-person-hearts::before { + content: '\f77b'; +} +.bi-phone-flip::before { + content: '\f77c'; +} +.bi-plugin::before { + content: '\f77d'; +} +.bi-postage-fill::before { + content: '\f77e'; +} +.bi-postage-heart-fill::before { + content: '\f77f'; +} +.bi-postage-heart::before { + content: '\f780'; +} +.bi-postage::before { + content: '\f781'; +} +.bi-postcard-fill::before { + content: '\f782'; +} +.bi-postcard-heart-fill::before { + content: '\f783'; +} +.bi-postcard-heart::before { + content: '\f784'; +} +.bi-postcard::before { + content: '\f785'; +} +.bi-search-heart-fill::before { + content: '\f786'; +} +.bi-search-heart::before { + content: '\f787'; +} +.bi-sliders2-vertical::before { + content: '\f788'; +} +.bi-sliders2::before { + content: '\f789'; +} +.bi-trash3-fill::before { + content: '\f78a'; +} +.bi-trash3::before { + content: '\f78b'; +} +.bi-valentine::before { + content: '\f78c'; +} +.bi-valentine2::before { + content: '\f78d'; +} +.bi-wrench-adjustable-circle-fill::before { + content: '\f78e'; +} +.bi-wrench-adjustable-circle::before { + content: '\f78f'; +} +.bi-wrench-adjustable::before { + content: '\f790'; +} +.bi-filetype-json::before { + content: '\f791'; +} +.bi-filetype-pptx::before { + content: '\f792'; +} +.bi-filetype-xlsx::before { + content: '\f793'; +} +.bi-1-circle-fill::before { + content: '\f796'; +} +.bi-1-circle::before { + content: '\f797'; +} +.bi-1-square-fill::before { + content: '\f798'; +} +.bi-1-square::before { + content: '\f799'; +} +.bi-2-circle-fill::before { + content: '\f79c'; +} +.bi-2-circle::before { + content: '\f79d'; +} +.bi-2-square-fill::before { + content: '\f79e'; +} +.bi-2-square::before { + content: '\f79f'; +} +.bi-3-circle-fill::before { + content: '\f7a2'; +} +.bi-3-circle::before { + content: '\f7a3'; +} +.bi-3-square-fill::before { + content: '\f7a4'; +} +.bi-3-square::before { + content: '\f7a5'; +} +.bi-4-circle-fill::before { + content: '\f7a8'; +} +.bi-4-circle::before { + content: '\f7a9'; +} +.bi-4-square-fill::before { + content: '\f7aa'; +} +.bi-4-square::before { + content: '\f7ab'; +} +.bi-5-circle-fill::before { + content: '\f7ae'; +} +.bi-5-circle::before { + content: '\f7af'; +} +.bi-5-square-fill::before { + content: '\f7b0'; +} +.bi-5-square::before { + content: '\f7b1'; +} +.bi-6-circle-fill::before { + content: '\f7b4'; +} +.bi-6-circle::before { + content: '\f7b5'; +} +.bi-6-square-fill::before { + content: '\f7b6'; +} +.bi-6-square::before { + content: '\f7b7'; +} +.bi-7-circle-fill::before { + content: '\f7ba'; +} +.bi-7-circle::before { + content: '\f7bb'; +} +.bi-7-square-fill::before { + content: '\f7bc'; +} +.bi-7-square::before { + content: '\f7bd'; +} +.bi-8-circle-fill::before { + content: '\f7c0'; +} +.bi-8-circle::before { + content: '\f7c1'; +} +.bi-8-square-fill::before { + content: '\f7c2'; +} +.bi-8-square::before { + content: '\f7c3'; +} +.bi-9-circle-fill::before { + content: '\f7c6'; +} +.bi-9-circle::before { + content: '\f7c7'; +} +.bi-9-square-fill::before { + content: '\f7c8'; +} +.bi-9-square::before { + content: '\f7c9'; +} +.bi-airplane-engines-fill::before { + content: '\f7ca'; +} +.bi-airplane-engines::before { + content: '\f7cb'; +} +.bi-airplane-fill::before { + content: '\f7cc'; +} +.bi-airplane::before { + content: '\f7cd'; +} +.bi-alexa::before { + content: '\f7ce'; +} +.bi-alipay::before { + content: '\f7cf'; +} +.bi-android::before { + content: '\f7d0'; +} +.bi-android2::before { + content: '\f7d1'; +} +.bi-box-fill::before { + content: '\f7d2'; +} +.bi-box-seam-fill::before { + content: '\f7d3'; +} +.bi-browser-chrome::before { + content: '\f7d4'; +} +.bi-browser-edge::before { + content: '\f7d5'; +} +.bi-browser-firefox::before { + content: '\f7d6'; +} +.bi-browser-safari::before { + content: '\f7d7'; +} +.bi-c-circle-fill::before { + content: '\f7da'; +} +.bi-c-circle::before { + content: '\f7db'; +} +.bi-c-square-fill::before { + content: '\f7dc'; +} +.bi-c-square::before { + content: '\f7dd'; +} +.bi-capsule-pill::before { + content: '\f7de'; +} +.bi-capsule::before { + content: '\f7df'; +} +.bi-car-front-fill::before { + content: '\f7e0'; +} +.bi-car-front::before { + content: '\f7e1'; +} +.bi-cassette-fill::before { + content: '\f7e2'; +} +.bi-cassette::before { + content: '\f7e3'; +} +.bi-cc-circle-fill::before { + content: '\f7e6'; +} +.bi-cc-circle::before { + content: '\f7e7'; +} +.bi-cc-square-fill::before { + content: '\f7e8'; +} +.bi-cc-square::before { + content: '\f7e9'; +} +.bi-cup-hot-fill::before { + content: '\f7ea'; +} +.bi-cup-hot::before { + content: '\f7eb'; +} +.bi-currency-rupee::before { + content: '\f7ec'; +} +.bi-dropbox::before { + content: '\f7ed'; +} +.bi-escape::before { + content: '\f7ee'; +} +.bi-fast-forward-btn-fill::before { + content: '\f7ef'; +} +.bi-fast-forward-btn::before { + content: '\f7f0'; +} +.bi-fast-forward-circle-fill::before { + content: '\f7f1'; +} +.bi-fast-forward-circle::before { + content: '\f7f2'; +} +.bi-fast-forward-fill::before { + content: '\f7f3'; +} +.bi-fast-forward::before { + content: '\f7f4'; +} +.bi-filetype-sql::before { + content: '\f7f5'; +} +.bi-fire::before { + content: '\f7f6'; +} +.bi-google-play::before { + content: '\f7f7'; +} +.bi-h-circle-fill::before { + content: '\f7fa'; +} +.bi-h-circle::before { + content: '\f7fb'; +} +.bi-h-square-fill::before { + content: '\f7fc'; +} +.bi-h-square::before { + content: '\f7fd'; +} +.bi-indent::before { + content: '\f7fe'; +} +.bi-lungs-fill::before { + content: '\f7ff'; +} +.bi-lungs::before { + content: '\f800'; +} +.bi-microsoft-teams::before { + content: '\f801'; +} +.bi-p-circle-fill::before { + content: '\f804'; +} +.bi-p-circle::before { + content: '\f805'; +} +.bi-p-square-fill::before { + content: '\f806'; +} +.bi-p-square::before { + content: '\f807'; +} +.bi-pass-fill::before { + content: '\f808'; +} +.bi-pass::before { + content: '\f809'; +} +.bi-prescription::before { + content: '\f80a'; +} +.bi-prescription2::before { + content: '\f80b'; +} +.bi-r-circle-fill::before { + content: '\f80e'; +} +.bi-r-circle::before { + content: '\f80f'; +} +.bi-r-square-fill::before { + content: '\f810'; +} +.bi-r-square::before { + content: '\f811'; +} +.bi-repeat-1::before { + content: '\f812'; +} +.bi-repeat::before { + content: '\f813'; +} +.bi-rewind-btn-fill::before { + content: '\f814'; +} +.bi-rewind-btn::before { + content: '\f815'; +} +.bi-rewind-circle-fill::before { + content: '\f816'; +} +.bi-rewind-circle::before { + content: '\f817'; +} +.bi-rewind-fill::before { + content: '\f818'; +} +.bi-rewind::before { + content: '\f819'; +} +.bi-train-freight-front-fill::before { + content: '\f81a'; +} +.bi-train-freight-front::before { + content: '\f81b'; +} +.bi-train-front-fill::before { + content: '\f81c'; +} +.bi-train-front::before { + content: '\f81d'; +} +.bi-train-lightrail-front-fill::before { + content: '\f81e'; +} +.bi-train-lightrail-front::before { + content: '\f81f'; +} +.bi-truck-front-fill::before { + content: '\f820'; +} +.bi-truck-front::before { + content: '\f821'; +} +.bi-ubuntu::before { + content: '\f822'; +} +.bi-unindent::before { + content: '\f823'; +} +.bi-unity::before { + content: '\f824'; +} +.bi-universal-access-circle::before { + content: '\f825'; +} +.bi-universal-access::before { + content: '\f826'; +} +.bi-virus::before { + content: '\f827'; +} +.bi-virus2::before { + content: '\f828'; +} +.bi-wechat::before { + content: '\f829'; +} +.bi-yelp::before { + content: '\f82a'; +} +.bi-sign-stop-fill::before { + content: '\f82b'; +} +.bi-sign-stop-lights-fill::before { + content: '\f82c'; +} +.bi-sign-stop-lights::before { + content: '\f82d'; +} +.bi-sign-stop::before { + content: '\f82e'; +} +.bi-sign-turn-left-fill::before { + content: '\f82f'; +} +.bi-sign-turn-left::before { + content: '\f830'; +} +.bi-sign-turn-right-fill::before { + content: '\f831'; +} +.bi-sign-turn-right::before { + content: '\f832'; +} +.bi-sign-turn-slight-left-fill::before { + content: '\f833'; +} +.bi-sign-turn-slight-left::before { + content: '\f834'; +} +.bi-sign-turn-slight-right-fill::before { + content: '\f835'; +} +.bi-sign-turn-slight-right::before { + content: '\f836'; +} +.bi-sign-yield-fill::before { + content: '\f837'; +} +.bi-sign-yield::before { + content: '\f838'; +} +.bi-ev-station-fill::before { + content: '\f839'; +} +.bi-ev-station::before { + content: '\f83a'; +} +.bi-fuel-pump-diesel-fill::before { + content: '\f83b'; +} +.bi-fuel-pump-diesel::before { + content: '\f83c'; +} +.bi-fuel-pump-fill::before { + content: '\f83d'; +} +.bi-fuel-pump::before { + content: '\f83e'; +} +.bi-0-circle-fill::before { + content: '\f83f'; +} +.bi-0-circle::before { + content: '\f840'; +} +.bi-0-square-fill::before { + content: '\f841'; +} +.bi-0-square::before { + content: '\f842'; +} +.bi-rocket-fill::before { + content: '\f843'; +} +.bi-rocket-takeoff-fill::before { + content: '\f844'; +} +.bi-rocket-takeoff::before { + content: '\f845'; +} +.bi-rocket::before { + content: '\f846'; +} +.bi-stripe::before { + content: '\f847'; +} +.bi-subscript::before { + content: '\f848'; +} +.bi-superscript::before { + content: '\f849'; +} +.bi-trello::before { + content: '\f84a'; +} +.bi-envelope-at-fill::before { + content: '\f84b'; +} +.bi-envelope-at::before { + content: '\f84c'; +} +.bi-regex::before { + content: '\f84d'; +} +.bi-text-wrap::before { + content: '\f84e'; +} +.bi-sign-dead-end-fill::before { + content: '\f84f'; +} +.bi-sign-dead-end::before { + content: '\f850'; +} +.bi-sign-do-not-enter-fill::before { + content: '\f851'; +} +.bi-sign-do-not-enter::before { + content: '\f852'; +} +.bi-sign-intersection-fill::before { + content: '\f853'; +} +.bi-sign-intersection-side-fill::before { + content: '\f854'; +} +.bi-sign-intersection-side::before { + content: '\f855'; +} +.bi-sign-intersection-t-fill::before { + content: '\f856'; +} +.bi-sign-intersection-t::before { + content: '\f857'; +} +.bi-sign-intersection-y-fill::before { + content: '\f858'; +} +.bi-sign-intersection-y::before { + content: '\f859'; +} +.bi-sign-intersection::before { + content: '\f85a'; +} +.bi-sign-merge-left-fill::before { + content: '\f85b'; +} +.bi-sign-merge-left::before { + content: '\f85c'; +} +.bi-sign-merge-right-fill::before { + content: '\f85d'; +} +.bi-sign-merge-right::before { + content: '\f85e'; +} +.bi-sign-no-left-turn-fill::before { + content: '\f85f'; +} +.bi-sign-no-left-turn::before { + content: '\f860'; +} +.bi-sign-no-parking-fill::before { + content: '\f861'; +} +.bi-sign-no-parking::before { + content: '\f862'; +} +.bi-sign-no-right-turn-fill::before { + content: '\f863'; +} +.bi-sign-no-right-turn::before { + content: '\f864'; +} +.bi-sign-railroad-fill::before { + content: '\f865'; +} +.bi-sign-railroad::before { + content: '\f866'; +} +.bi-building-add::before { + content: '\f867'; +} +.bi-building-check::before { + content: '\f868'; +} +.bi-building-dash::before { + content: '\f869'; +} +.bi-building-down::before { + content: '\f86a'; +} +.bi-building-exclamation::before { + content: '\f86b'; +} +.bi-building-fill-add::before { + content: '\f86c'; +} +.bi-building-fill-check::before { + content: '\f86d'; +} +.bi-building-fill-dash::before { + content: '\f86e'; +} +.bi-building-fill-down::before { + content: '\f86f'; +} +.bi-building-fill-exclamation::before { + content: '\f870'; +} +.bi-building-fill-gear::before { + content: '\f871'; +} +.bi-building-fill-lock::before { + content: '\f872'; +} +.bi-building-fill-slash::before { + content: '\f873'; +} +.bi-building-fill-up::before { + content: '\f874'; +} +.bi-building-fill-x::before { + content: '\f875'; +} +.bi-building-fill::before { + content: '\f876'; +} +.bi-building-gear::before { + content: '\f877'; +} +.bi-building-lock::before { + content: '\f878'; +} +.bi-building-slash::before { + content: '\f879'; +} +.bi-building-up::before { + content: '\f87a'; +} +.bi-building-x::before { + content: '\f87b'; +} +.bi-buildings-fill::before { + content: '\f87c'; +} +.bi-buildings::before { + content: '\f87d'; +} +.bi-bus-front-fill::before { + content: '\f87e'; +} +.bi-bus-front::before { + content: '\f87f'; +} +.bi-ev-front-fill::before { + content: '\f880'; +} +.bi-ev-front::before { + content: '\f881'; +} +.bi-globe-americas::before { + content: '\f882'; +} +.bi-globe-asia-australia::before { + content: '\f883'; +} +.bi-globe-central-south-asia::before { + content: '\f884'; +} +.bi-globe-europe-africa::before { + content: '\f885'; +} +.bi-house-add-fill::before { + content: '\f886'; +} +.bi-house-add::before { + content: '\f887'; +} +.bi-house-check-fill::before { + content: '\f888'; +} +.bi-house-check::before { + content: '\f889'; +} +.bi-house-dash-fill::before { + content: '\f88a'; +} +.bi-house-dash::before { + content: '\f88b'; +} +.bi-house-down-fill::before { + content: '\f88c'; +} +.bi-house-down::before { + content: '\f88d'; +} +.bi-house-exclamation-fill::before { + content: '\f88e'; +} +.bi-house-exclamation::before { + content: '\f88f'; +} +.bi-house-gear-fill::before { + content: '\f890'; +} +.bi-house-gear::before { + content: '\f891'; +} +.bi-house-lock-fill::before { + content: '\f892'; +} +.bi-house-lock::before { + content: '\f893'; +} +.bi-house-slash-fill::before { + content: '\f894'; +} +.bi-house-slash::before { + content: '\f895'; +} +.bi-house-up-fill::before { + content: '\f896'; +} +.bi-house-up::before { + content: '\f897'; +} +.bi-house-x-fill::before { + content: '\f898'; +} +.bi-house-x::before { + content: '\f899'; +} +.bi-person-add::before { + content: '\f89a'; +} +.bi-person-down::before { + content: '\f89b'; +} +.bi-person-exclamation::before { + content: '\f89c'; +} +.bi-person-fill-add::before { + content: '\f89d'; +} +.bi-person-fill-check::before { + content: '\f89e'; +} +.bi-person-fill-dash::before { + content: '\f89f'; +} +.bi-person-fill-down::before { + content: '\f8a0'; +} +.bi-person-fill-exclamation::before { + content: '\f8a1'; +} +.bi-person-fill-gear::before { + content: '\f8a2'; +} +.bi-person-fill-lock::before { + content: '\f8a3'; +} +.bi-person-fill-slash::before { + content: '\f8a4'; +} +.bi-person-fill-up::before { + content: '\f8a5'; +} +.bi-person-fill-x::before { + content: '\f8a6'; +} +.bi-person-gear::before { + content: '\f8a7'; +} +.bi-person-lock::before { + content: '\f8a8'; +} +.bi-person-slash::before { + content: '\f8a9'; +} +.bi-person-up::before { + content: '\f8aa'; +} +.bi-scooter::before { + content: '\f8ab'; +} +.bi-taxi-front-fill::before { + content: '\f8ac'; +} +.bi-taxi-front::before { + content: '\f8ad'; +} +.bi-amd::before { + content: '\f8ae'; +} +.bi-database-add::before { + content: '\f8af'; +} +.bi-database-check::before { + content: '\f8b0'; +} +.bi-database-dash::before { + content: '\f8b1'; +} +.bi-database-down::before { + content: '\f8b2'; +} +.bi-database-exclamation::before { + content: '\f8b3'; +} +.bi-database-fill-add::before { + content: '\f8b4'; +} +.bi-database-fill-check::before { + content: '\f8b5'; +} +.bi-database-fill-dash::before { + content: '\f8b6'; +} +.bi-database-fill-down::before { + content: '\f8b7'; +} +.bi-database-fill-exclamation::before { + content: '\f8b8'; +} +.bi-database-fill-gear::before { + content: '\f8b9'; +} +.bi-database-fill-lock::before { + content: '\f8ba'; +} +.bi-database-fill-slash::before { + content: '\f8bb'; +} +.bi-database-fill-up::before { + content: '\f8bc'; +} +.bi-database-fill-x::before { + content: '\f8bd'; +} +.bi-database-fill::before { + content: '\f8be'; +} +.bi-database-gear::before { + content: '\f8bf'; +} +.bi-database-lock::before { + content: '\f8c0'; +} +.bi-database-slash::before { + content: '\f8c1'; +} +.bi-database-up::before { + content: '\f8c2'; +} +.bi-database-x::before { + content: '\f8c3'; +} +.bi-database::before { + content: '\f8c4'; +} +.bi-houses-fill::before { + content: '\f8c5'; +} +.bi-houses::before { + content: '\f8c6'; +} +.bi-nvidia::before { + content: '\f8c7'; +} +.bi-person-vcard-fill::before { + content: '\f8c8'; +} +.bi-person-vcard::before { + content: '\f8c9'; +} +.bi-sina-weibo::before { + content: '\f8ca'; +} +.bi-tencent-qq::before { + content: '\f8cb'; +} +.bi-wikipedia::before { + content: '\f8cc'; +} +.bi-alphabet-uppercase::before { + content: '\f2a5'; +} +.bi-alphabet::before { + content: '\f68a'; +} +.bi-amazon::before { + content: '\f68d'; +} +.bi-arrows-collapse-vertical::before { + content: '\f690'; +} +.bi-arrows-expand-vertical::before { + content: '\f695'; +} +.bi-arrows-vertical::before { + content: '\f698'; +} +.bi-arrows::before { + content: '\f6a2'; +} +.bi-ban-fill::before { + content: '\f6a3'; +} +.bi-ban::before { + content: '\f6b6'; +} +.bi-bing::before { + content: '\f6c2'; +} +.bi-cake::before { + content: '\f6e0'; +} +.bi-cake2::before { + content: '\f6ed'; +} +.bi-cookie::before { + content: '\f6ee'; +} +.bi-copy::before { + content: '\f759'; +} +.bi-crosshair::before { + content: '\f769'; +} +.bi-crosshair2::before { + content: '\f794'; +} +.bi-emoji-astonished-fill::before { + content: '\f795'; +} +.bi-emoji-astonished::before { + content: '\f79a'; +} +.bi-emoji-grimace-fill::before { + content: '\f79b'; +} +.bi-emoji-grimace::before { + content: '\f7a0'; +} +.bi-emoji-grin-fill::before { + content: '\f7a1'; +} +.bi-emoji-grin::before { + content: '\f7a6'; +} +.bi-emoji-surprise-fill::before { + content: '\f7a7'; +} +.bi-emoji-surprise::before { + content: '\f7ac'; +} +.bi-emoji-tear-fill::before { + content: '\f7ad'; +} +.bi-emoji-tear::before { + content: '\f7b2'; +} +.bi-envelope-arrow-down-fill::before { + content: '\f7b3'; +} +.bi-envelope-arrow-down::before { + content: '\f7b8'; +} +.bi-envelope-arrow-up-fill::before { + content: '\f7b9'; +} +.bi-envelope-arrow-up::before { + content: '\f7be'; +} +.bi-feather::before { + content: '\f7bf'; +} +.bi-feather2::before { + content: '\f7c4'; +} +.bi-floppy-fill::before { + content: '\f7c5'; +} +.bi-floppy::before { + content: '\f7d8'; +} +.bi-floppy2-fill::before { + content: '\f7d9'; +} +.bi-floppy2::before { + content: '\f7e4'; +} +.bi-gitlab::before { + content: '\f7e5'; +} +.bi-highlighter::before { + content: '\f7f8'; +} +.bi-marker-tip::before { + content: '\f802'; +} +.bi-nvme-fill::before { + content: '\f803'; +} +.bi-nvme::before { + content: '\f80c'; +} +.bi-opencollective::before { + content: '\f80d'; +} +.bi-pci-card-network::before { + content: '\f8cd'; +} +.bi-pci-card-sound::before { + content: '\f8ce'; +} +.bi-radar::before { + content: '\f8cf'; +} +.bi-send-arrow-down-fill::before { + content: '\f8d0'; +} +.bi-send-arrow-down::before { + content: '\f8d1'; +} +.bi-send-arrow-up-fill::before { + content: '\f8d2'; +} +.bi-send-arrow-up::before { + content: '\f8d3'; +} +.bi-sim-slash-fill::before { + content: '\f8d4'; +} +.bi-sim-slash::before { + content: '\f8d5'; +} +.bi-sourceforge::before { + content: '\f8d6'; +} +.bi-substack::before { + content: '\f8d7'; +} +.bi-threads-fill::before { + content: '\f8d8'; +} +.bi-threads::before { + content: '\f8d9'; +} +.bi-transparency::before { + content: '\f8da'; +} +.bi-twitter-x::before { + content: '\f8db'; +} +.bi-type-h4::before { + content: '\f8dc'; +} +.bi-type-h5::before { + content: '\f8dd'; +} +.bi-type-h6::before { + content: '\f8de'; +} +.bi-backpack-fill::before { + content: '\f8df'; +} +.bi-backpack::before { + content: '\f8e0'; +} +.bi-backpack2-fill::before { + content: '\f8e1'; +} +.bi-backpack2::before { + content: '\f8e2'; +} +.bi-backpack3-fill::before { + content: '\f8e3'; +} +.bi-backpack3::before { + content: '\f8e4'; +} +.bi-backpack4-fill::before { + content: '\f8e5'; +} +.bi-backpack4::before { + content: '\f8e6'; +} +.bi-brilliance::before { + content: '\f8e7'; +} +.bi-cake-fill::before { + content: '\f8e8'; +} +.bi-cake2-fill::before { + content: '\f8e9'; +} +.bi-duffle-fill::before { + content: '\f8ea'; +} +.bi-duffle::before { + content: '\f8eb'; +} +.bi-exposure::before { + content: '\f8ec'; +} +.bi-gender-neuter::before { + content: '\f8ed'; +} +.bi-highlights::before { + content: '\f8ee'; +} +.bi-luggage-fill::before { + content: '\f8ef'; +} +.bi-luggage::before { + content: '\f8f0'; +} +.bi-mailbox-flag::before { + content: '\f8f1'; +} +.bi-mailbox2-flag::before { + content: '\f8f2'; +} +.bi-noise-reduction::before { + content: '\f8f3'; +} +.bi-passport-fill::before { + content: '\f8f4'; +} +.bi-passport::before { + content: '\f8f5'; +} +.bi-person-arms-up::before { + content: '\f8f6'; +} +.bi-person-raised-hand::before { + content: '\f8f7'; +} +.bi-person-standing-dress::before { + content: '\f8f8'; +} +.bi-person-standing::before { + content: '\f8f9'; +} +.bi-person-walking::before { + content: '\f8fa'; +} +.bi-person-wheelchair::before { + content: '\f8fb'; +} +.bi-shadows::before { + content: '\f8fc'; +} +.bi-suitcase-fill::before { + content: '\f8fd'; +} +.bi-suitcase-lg-fill::before { + content: '\f8fe'; +} +.bi-suitcase-lg::before { + content: '\f8ff'; +} +.bi-suitcase::before { + content: '\f900'; +} +.bi-suitcase2-fill::before { + content: '\f901'; +} +.bi-suitcase2::before { + content: '\f902'; +} +.bi-vignette::before { + content: '\f903'; +} diff --git a/src/assets/fonts/bootstrap-icons.json b/src/assets/fonts/bootstrap-icons.json new file mode 100644 index 00000000..4204c2fd --- /dev/null +++ b/src/assets/fonts/bootstrap-icons.json @@ -0,0 +1,2052 @@ +{ + "123": 63103, + "alarm-fill": 61697, + "alarm": 61698, + "align-bottom": 61699, + "align-center": 61700, + "align-end": 61701, + "align-middle": 61702, + "align-start": 61703, + "align-top": 61704, + "alt": 61705, + "app-indicator": 61706, + "app": 61707, + "archive-fill": 61708, + "archive": 61709, + "arrow-90deg-down": 61710, + "arrow-90deg-left": 61711, + "arrow-90deg-right": 61712, + "arrow-90deg-up": 61713, + "arrow-bar-down": 61714, + "arrow-bar-left": 61715, + "arrow-bar-right": 61716, + "arrow-bar-up": 61717, + "arrow-clockwise": 61718, + "arrow-counterclockwise": 61719, + "arrow-down-circle-fill": 61720, + "arrow-down-circle": 61721, + "arrow-down-left-circle-fill": 61722, + "arrow-down-left-circle": 61723, + "arrow-down-left-square-fill": 61724, + "arrow-down-left-square": 61725, + "arrow-down-left": 61726, + "arrow-down-right-circle-fill": 61727, + "arrow-down-right-circle": 61728, + "arrow-down-right-square-fill": 61729, + "arrow-down-right-square": 61730, + "arrow-down-right": 61731, + "arrow-down-short": 61732, + "arrow-down-square-fill": 61733, + "arrow-down-square": 61734, + "arrow-down-up": 61735, + "arrow-down": 61736, + "arrow-left-circle-fill": 61737, + "arrow-left-circle": 61738, + "arrow-left-right": 61739, + "arrow-left-short": 61740, + "arrow-left-square-fill": 61741, + "arrow-left-square": 61742, + "arrow-left": 61743, + "arrow-repeat": 61744, + "arrow-return-left": 61745, + "arrow-return-right": 61746, + "arrow-right-circle-fill": 61747, + "arrow-right-circle": 61748, + "arrow-right-short": 61749, + "arrow-right-square-fill": 61750, + "arrow-right-square": 61751, + "arrow-right": 61752, + "arrow-up-circle-fill": 61753, + "arrow-up-circle": 61754, + "arrow-up-left-circle-fill": 61755, + "arrow-up-left-circle": 61756, + "arrow-up-left-square-fill": 61757, + "arrow-up-left-square": 61758, + "arrow-up-left": 61759, + "arrow-up-right-circle-fill": 61760, + "arrow-up-right-circle": 61761, + "arrow-up-right-square-fill": 61762, + "arrow-up-right-square": 61763, + "arrow-up-right": 61764, + "arrow-up-short": 61765, + "arrow-up-square-fill": 61766, + "arrow-up-square": 61767, + "arrow-up": 61768, + "arrows-angle-contract": 61769, + "arrows-angle-expand": 61770, + "arrows-collapse": 61771, + "arrows-expand": 61772, + "arrows-fullscreen": 61773, + "arrows-move": 61774, + "aspect-ratio-fill": 61775, + "aspect-ratio": 61776, + "asterisk": 61777, + "at": 61778, + "award-fill": 61779, + "award": 61780, + "back": 61781, + "backspace-fill": 61782, + "backspace-reverse-fill": 61783, + "backspace-reverse": 61784, + "backspace": 61785, + "badge-3d-fill": 61786, + "badge-3d": 61787, + "badge-4k-fill": 61788, + "badge-4k": 61789, + "badge-8k-fill": 61790, + "badge-8k": 61791, + "badge-ad-fill": 61792, + "badge-ad": 61793, + "badge-ar-fill": 61794, + "badge-ar": 61795, + "badge-cc-fill": 61796, + "badge-cc": 61797, + "badge-hd-fill": 61798, + "badge-hd": 61799, + "badge-tm-fill": 61800, + "badge-tm": 61801, + "badge-vo-fill": 61802, + "badge-vo": 61803, + "badge-vr-fill": 61804, + "badge-vr": 61805, + "badge-wc-fill": 61806, + "badge-wc": 61807, + "bag-check-fill": 61808, + "bag-check": 61809, + "bag-dash-fill": 61810, + "bag-dash": 61811, + "bag-fill": 61812, + "bag-plus-fill": 61813, + "bag-plus": 61814, + "bag-x-fill": 61815, + "bag-x": 61816, + "bag": 61817, + "bar-chart-fill": 61818, + "bar-chart-line-fill": 61819, + "bar-chart-line": 61820, + "bar-chart-steps": 61821, + "bar-chart": 61822, + "basket-fill": 61823, + "basket": 61824, + "basket2-fill": 61825, + "basket2": 61826, + "basket3-fill": 61827, + "basket3": 61828, + "battery-charging": 61829, + "battery-full": 61830, + "battery-half": 61831, + "battery": 61832, + "bell-fill": 61833, + "bell": 61834, + "bezier": 61835, + "bezier2": 61836, + "bicycle": 61837, + "binoculars-fill": 61838, + "binoculars": 61839, + "blockquote-left": 61840, + "blockquote-right": 61841, + "book-fill": 61842, + "book-half": 61843, + "book": 61844, + "bookmark-check-fill": 61845, + "bookmark-check": 61846, + "bookmark-dash-fill": 61847, + "bookmark-dash": 61848, + "bookmark-fill": 61849, + "bookmark-heart-fill": 61850, + "bookmark-heart": 61851, + "bookmark-plus-fill": 61852, + "bookmark-plus": 61853, + "bookmark-star-fill": 61854, + "bookmark-star": 61855, + "bookmark-x-fill": 61856, + "bookmark-x": 61857, + "bookmark": 61858, + "bookmarks-fill": 61859, + "bookmarks": 61860, + "bookshelf": 61861, + "bootstrap-fill": 61862, + "bootstrap-reboot": 61863, + "bootstrap": 61864, + "border-all": 61865, + "border-bottom": 61866, + "border-center": 61867, + "border-inner": 61868, + "border-left": 61869, + "border-middle": 61870, + "border-outer": 61871, + "border-right": 61872, + "border-style": 61873, + "border-top": 61874, + "border-width": 61875, + "border": 61876, + "bounding-box-circles": 61877, + "bounding-box": 61878, + "box-arrow-down-left": 61879, + "box-arrow-down-right": 61880, + "box-arrow-down": 61881, + "box-arrow-in-down-left": 61882, + "box-arrow-in-down-right": 61883, + "box-arrow-in-down": 61884, + "box-arrow-in-left": 61885, + "box-arrow-in-right": 61886, + "box-arrow-in-up-left": 61887, + "box-arrow-in-up-right": 61888, + "box-arrow-in-up": 61889, + "box-arrow-left": 61890, + "box-arrow-right": 61891, + "box-arrow-up-left": 61892, + "box-arrow-up-right": 61893, + "box-arrow-up": 61894, + "box-seam": 61895, + "box": 61896, + "braces": 61897, + "bricks": 61898, + "briefcase-fill": 61899, + "briefcase": 61900, + "brightness-alt-high-fill": 61901, + "brightness-alt-high": 61902, + "brightness-alt-low-fill": 61903, + "brightness-alt-low": 61904, + "brightness-high-fill": 61905, + "brightness-high": 61906, + "brightness-low-fill": 61907, + "brightness-low": 61908, + "broadcast-pin": 61909, + "broadcast": 61910, + "brush-fill": 61911, + "brush": 61912, + "bucket-fill": 61913, + "bucket": 61914, + "bug-fill": 61915, + "bug": 61916, + "building": 61917, + "bullseye": 61918, + "calculator-fill": 61919, + "calculator": 61920, + "calendar-check-fill": 61921, + "calendar-check": 61922, + "calendar-date-fill": 61923, + "calendar-date": 61924, + "calendar-day-fill": 61925, + "calendar-day": 61926, + "calendar-event-fill": 61927, + "calendar-event": 61928, + "calendar-fill": 61929, + "calendar-minus-fill": 61930, + "calendar-minus": 61931, + "calendar-month-fill": 61932, + "calendar-month": 61933, + "calendar-plus-fill": 61934, + "calendar-plus": 61935, + "calendar-range-fill": 61936, + "calendar-range": 61937, + "calendar-week-fill": 61938, + "calendar-week": 61939, + "calendar-x-fill": 61940, + "calendar-x": 61941, + "calendar": 61942, + "calendar2-check-fill": 61943, + "calendar2-check": 61944, + "calendar2-date-fill": 61945, + "calendar2-date": 61946, + "calendar2-day-fill": 61947, + "calendar2-day": 61948, + "calendar2-event-fill": 61949, + "calendar2-event": 61950, + "calendar2-fill": 61951, + "calendar2-minus-fill": 61952, + "calendar2-minus": 61953, + "calendar2-month-fill": 61954, + "calendar2-month": 61955, + "calendar2-plus-fill": 61956, + "calendar2-plus": 61957, + "calendar2-range-fill": 61958, + "calendar2-range": 61959, + "calendar2-week-fill": 61960, + "calendar2-week": 61961, + "calendar2-x-fill": 61962, + "calendar2-x": 61963, + "calendar2": 61964, + "calendar3-event-fill": 61965, + "calendar3-event": 61966, + "calendar3-fill": 61967, + "calendar3-range-fill": 61968, + "calendar3-range": 61969, + "calendar3-week-fill": 61970, + "calendar3-week": 61971, + "calendar3": 61972, + "calendar4-event": 61973, + "calendar4-range": 61974, + "calendar4-week": 61975, + "calendar4": 61976, + "camera-fill": 61977, + "camera-reels-fill": 61978, + "camera-reels": 61979, + "camera-video-fill": 61980, + "camera-video-off-fill": 61981, + "camera-video-off": 61982, + "camera-video": 61983, + "camera": 61984, + "camera2": 61985, + "capslock-fill": 61986, + "capslock": 61987, + "card-checklist": 61988, + "card-heading": 61989, + "card-image": 61990, + "card-list": 61991, + "card-text": 61992, + "caret-down-fill": 61993, + "caret-down-square-fill": 61994, + "caret-down-square": 61995, + "caret-down": 61996, + "caret-left-fill": 61997, + "caret-left-square-fill": 61998, + "caret-left-square": 61999, + "caret-left": 62000, + "caret-right-fill": 62001, + "caret-right-square-fill": 62002, + "caret-right-square": 62003, + "caret-right": 62004, + "caret-up-fill": 62005, + "caret-up-square-fill": 62006, + "caret-up-square": 62007, + "caret-up": 62008, + "cart-check-fill": 62009, + "cart-check": 62010, + "cart-dash-fill": 62011, + "cart-dash": 62012, + "cart-fill": 62013, + "cart-plus-fill": 62014, + "cart-plus": 62015, + "cart-x-fill": 62016, + "cart-x": 62017, + "cart": 62018, + "cart2": 62019, + "cart3": 62020, + "cart4": 62021, + "cash-stack": 62022, + "cash": 62023, + "cast": 62024, + "chat-dots-fill": 62025, + "chat-dots": 62026, + "chat-fill": 62027, + "chat-left-dots-fill": 62028, + "chat-left-dots": 62029, + "chat-left-fill": 62030, + "chat-left-quote-fill": 62031, + "chat-left-quote": 62032, + "chat-left-text-fill": 62033, + "chat-left-text": 62034, + "chat-left": 62035, + "chat-quote-fill": 62036, + "chat-quote": 62037, + "chat-right-dots-fill": 62038, + "chat-right-dots": 62039, + "chat-right-fill": 62040, + "chat-right-quote-fill": 62041, + "chat-right-quote": 62042, + "chat-right-text-fill": 62043, + "chat-right-text": 62044, + "chat-right": 62045, + "chat-square-dots-fill": 62046, + "chat-square-dots": 62047, + "chat-square-fill": 62048, + "chat-square-quote-fill": 62049, + "chat-square-quote": 62050, + "chat-square-text-fill": 62051, + "chat-square-text": 62052, + "chat-square": 62053, + "chat-text-fill": 62054, + "chat-text": 62055, + "chat": 62056, + "check-all": 62057, + "check-circle-fill": 62058, + "check-circle": 62059, + "check-square-fill": 62060, + "check-square": 62061, + "check": 62062, + "check2-all": 62063, + "check2-circle": 62064, + "check2-square": 62065, + "check2": 62066, + "chevron-bar-contract": 62067, + "chevron-bar-down": 62068, + "chevron-bar-expand": 62069, + "chevron-bar-left": 62070, + "chevron-bar-right": 62071, + "chevron-bar-up": 62072, + "chevron-compact-down": 62073, + "chevron-compact-left": 62074, + "chevron-compact-right": 62075, + "chevron-compact-up": 62076, + "chevron-contract": 62077, + "chevron-double-down": 62078, + "chevron-double-left": 62079, + "chevron-double-right": 62080, + "chevron-double-up": 62081, + "chevron-down": 62082, + "chevron-expand": 62083, + "chevron-left": 62084, + "chevron-right": 62085, + "chevron-up": 62086, + "circle-fill": 62087, + "circle-half": 62088, + "circle-square": 62089, + "circle": 62090, + "clipboard-check": 62091, + "clipboard-data": 62092, + "clipboard-minus": 62093, + "clipboard-plus": 62094, + "clipboard-x": 62095, + "clipboard": 62096, + "clock-fill": 62097, + "clock-history": 62098, + "clock": 62099, + "cloud-arrow-down-fill": 62100, + "cloud-arrow-down": 62101, + "cloud-arrow-up-fill": 62102, + "cloud-arrow-up": 62103, + "cloud-check-fill": 62104, + "cloud-check": 62105, + "cloud-download-fill": 62106, + "cloud-download": 62107, + "cloud-drizzle-fill": 62108, + "cloud-drizzle": 62109, + "cloud-fill": 62110, + "cloud-fog-fill": 62111, + "cloud-fog": 62112, + "cloud-fog2-fill": 62113, + "cloud-fog2": 62114, + "cloud-hail-fill": 62115, + "cloud-hail": 62116, + "cloud-haze-fill": 62118, + "cloud-haze": 62119, + "cloud-haze2-fill": 62120, + "cloud-lightning-fill": 62121, + "cloud-lightning-rain-fill": 62122, + "cloud-lightning-rain": 62123, + "cloud-lightning": 62124, + "cloud-minus-fill": 62125, + "cloud-minus": 62126, + "cloud-moon-fill": 62127, + "cloud-moon": 62128, + "cloud-plus-fill": 62129, + "cloud-plus": 62130, + "cloud-rain-fill": 62131, + "cloud-rain-heavy-fill": 62132, + "cloud-rain-heavy": 62133, + "cloud-rain": 62134, + "cloud-slash-fill": 62135, + "cloud-slash": 62136, + "cloud-sleet-fill": 62137, + "cloud-sleet": 62138, + "cloud-snow-fill": 62139, + "cloud-snow": 62140, + "cloud-sun-fill": 62141, + "cloud-sun": 62142, + "cloud-upload-fill": 62143, + "cloud-upload": 62144, + "cloud": 62145, + "clouds-fill": 62146, + "clouds": 62147, + "cloudy-fill": 62148, + "cloudy": 62149, + "code-slash": 62150, + "code-square": 62151, + "code": 62152, + "collection-fill": 62153, + "collection-play-fill": 62154, + "collection-play": 62155, + "collection": 62156, + "columns-gap": 62157, + "columns": 62158, + "command": 62159, + "compass-fill": 62160, + "compass": 62161, + "cone-striped": 62162, + "cone": 62163, + "controller": 62164, + "cpu-fill": 62165, + "cpu": 62166, + "credit-card-2-back-fill": 62167, + "credit-card-2-back": 62168, + "credit-card-2-front-fill": 62169, + "credit-card-2-front": 62170, + "credit-card-fill": 62171, + "credit-card": 62172, + "crop": 62173, + "cup-fill": 62174, + "cup-straw": 62175, + "cup": 62176, + "cursor-fill": 62177, + "cursor-text": 62178, + "cursor": 62179, + "dash-circle-dotted": 62180, + "dash-circle-fill": 62181, + "dash-circle": 62182, + "dash-square-dotted": 62183, + "dash-square-fill": 62184, + "dash-square": 62185, + "dash": 62186, + "diagram-2-fill": 62187, + "diagram-2": 62188, + "diagram-3-fill": 62189, + "diagram-3": 62190, + "diamond-fill": 62191, + "diamond-half": 62192, + "diamond": 62193, + "dice-1-fill": 62194, + "dice-1": 62195, + "dice-2-fill": 62196, + "dice-2": 62197, + "dice-3-fill": 62198, + "dice-3": 62199, + "dice-4-fill": 62200, + "dice-4": 62201, + "dice-5-fill": 62202, + "dice-5": 62203, + "dice-6-fill": 62204, + "dice-6": 62205, + "disc-fill": 62206, + "disc": 62207, + "discord": 62208, + "display-fill": 62209, + "display": 62210, + "distribute-horizontal": 62211, + "distribute-vertical": 62212, + "door-closed-fill": 62213, + "door-closed": 62214, + "door-open-fill": 62215, + "door-open": 62216, + "dot": 62217, + "download": 62218, + "droplet-fill": 62219, + "droplet-half": 62220, + "droplet": 62221, + "earbuds": 62222, + "easel-fill": 62223, + "easel": 62224, + "egg-fill": 62225, + "egg-fried": 62226, + "egg": 62227, + "eject-fill": 62228, + "eject": 62229, + "emoji-angry-fill": 62230, + "emoji-angry": 62231, + "emoji-dizzy-fill": 62232, + "emoji-dizzy": 62233, + "emoji-expressionless-fill": 62234, + "emoji-expressionless": 62235, + "emoji-frown-fill": 62236, + "emoji-frown": 62237, + "emoji-heart-eyes-fill": 62238, + "emoji-heart-eyes": 62239, + "emoji-laughing-fill": 62240, + "emoji-laughing": 62241, + "emoji-neutral-fill": 62242, + "emoji-neutral": 62243, + "emoji-smile-fill": 62244, + "emoji-smile-upside-down-fill": 62245, + "emoji-smile-upside-down": 62246, + "emoji-smile": 62247, + "emoji-sunglasses-fill": 62248, + "emoji-sunglasses": 62249, + "emoji-wink-fill": 62250, + "emoji-wink": 62251, + "envelope-fill": 62252, + "envelope-open-fill": 62253, + "envelope-open": 62254, + "envelope": 62255, + "eraser-fill": 62256, + "eraser": 62257, + "exclamation-circle-fill": 62258, + "exclamation-circle": 62259, + "exclamation-diamond-fill": 62260, + "exclamation-diamond": 62261, + "exclamation-octagon-fill": 62262, + "exclamation-octagon": 62263, + "exclamation-square-fill": 62264, + "exclamation-square": 62265, + "exclamation-triangle-fill": 62266, + "exclamation-triangle": 62267, + "exclamation": 62268, + "exclude": 62269, + "eye-fill": 62270, + "eye-slash-fill": 62271, + "eye-slash": 62272, + "eye": 62273, + "eyedropper": 62274, + "eyeglasses": 62275, + "facebook": 62276, + "file-arrow-down-fill": 62277, + "file-arrow-down": 62278, + "file-arrow-up-fill": 62279, + "file-arrow-up": 62280, + "file-bar-graph-fill": 62281, + "file-bar-graph": 62282, + "file-binary-fill": 62283, + "file-binary": 62284, + "file-break-fill": 62285, + "file-break": 62286, + "file-check-fill": 62287, + "file-check": 62288, + "file-code-fill": 62289, + "file-code": 62290, + "file-diff-fill": 62291, + "file-diff": 62292, + "file-earmark-arrow-down-fill": 62293, + "file-earmark-arrow-down": 62294, + "file-earmark-arrow-up-fill": 62295, + "file-earmark-arrow-up": 62296, + "file-earmark-bar-graph-fill": 62297, + "file-earmark-bar-graph": 62298, + "file-earmark-binary-fill": 62299, + "file-earmark-binary": 62300, + "file-earmark-break-fill": 62301, + "file-earmark-break": 62302, + "file-earmark-check-fill": 62303, + "file-earmark-check": 62304, + "file-earmark-code-fill": 62305, + "file-earmark-code": 62306, + "file-earmark-diff-fill": 62307, + "file-earmark-diff": 62308, + "file-earmark-easel-fill": 62309, + "file-earmark-easel": 62310, + "file-earmark-excel-fill": 62311, + "file-earmark-excel": 62312, + "file-earmark-fill": 62313, + "file-earmark-font-fill": 62314, + "file-earmark-font": 62315, + "file-earmark-image-fill": 62316, + "file-earmark-image": 62317, + "file-earmark-lock-fill": 62318, + "file-earmark-lock": 62319, + "file-earmark-lock2-fill": 62320, + "file-earmark-lock2": 62321, + "file-earmark-medical-fill": 62322, + "file-earmark-medical": 62323, + "file-earmark-minus-fill": 62324, + "file-earmark-minus": 62325, + "file-earmark-music-fill": 62326, + "file-earmark-music": 62327, + "file-earmark-person-fill": 62328, + "file-earmark-person": 62329, + "file-earmark-play-fill": 62330, + "file-earmark-play": 62331, + "file-earmark-plus-fill": 62332, + "file-earmark-plus": 62333, + "file-earmark-post-fill": 62334, + "file-earmark-post": 62335, + "file-earmark-ppt-fill": 62336, + "file-earmark-ppt": 62337, + "file-earmark-richtext-fill": 62338, + "file-earmark-richtext": 62339, + "file-earmark-ruled-fill": 62340, + "file-earmark-ruled": 62341, + "file-earmark-slides-fill": 62342, + "file-earmark-slides": 62343, + "file-earmark-spreadsheet-fill": 62344, + "file-earmark-spreadsheet": 62345, + "file-earmark-text-fill": 62346, + "file-earmark-text": 62347, + "file-earmark-word-fill": 62348, + "file-earmark-word": 62349, + "file-earmark-x-fill": 62350, + "file-earmark-x": 62351, + "file-earmark-zip-fill": 62352, + "file-earmark-zip": 62353, + "file-earmark": 62354, + "file-easel-fill": 62355, + "file-easel": 62356, + "file-excel-fill": 62357, + "file-excel": 62358, + "file-fill": 62359, + "file-font-fill": 62360, + "file-font": 62361, + "file-image-fill": 62362, + "file-image": 62363, + "file-lock-fill": 62364, + "file-lock": 62365, + "file-lock2-fill": 62366, + "file-lock2": 62367, + "file-medical-fill": 62368, + "file-medical": 62369, + "file-minus-fill": 62370, + "file-minus": 62371, + "file-music-fill": 62372, + "file-music": 62373, + "file-person-fill": 62374, + "file-person": 62375, + "file-play-fill": 62376, + "file-play": 62377, + "file-plus-fill": 62378, + "file-plus": 62379, + "file-post-fill": 62380, + "file-post": 62381, + "file-ppt-fill": 62382, + "file-ppt": 62383, + "file-richtext-fill": 62384, + "file-richtext": 62385, + "file-ruled-fill": 62386, + "file-ruled": 62387, + "file-slides-fill": 62388, + "file-slides": 62389, + "file-spreadsheet-fill": 62390, + "file-spreadsheet": 62391, + "file-text-fill": 62392, + "file-text": 62393, + "file-word-fill": 62394, + "file-word": 62395, + "file-x-fill": 62396, + "file-x": 62397, + "file-zip-fill": 62398, + "file-zip": 62399, + "file": 62400, + "files-alt": 62401, + "files": 62402, + "film": 62403, + "filter-circle-fill": 62404, + "filter-circle": 62405, + "filter-left": 62406, + "filter-right": 62407, + "filter-square-fill": 62408, + "filter-square": 62409, + "filter": 62410, + "flag-fill": 62411, + "flag": 62412, + "flower1": 62413, + "flower2": 62414, + "flower3": 62415, + "folder-check": 62416, + "folder-fill": 62417, + "folder-minus": 62418, + "folder-plus": 62419, + "folder-symlink-fill": 62420, + "folder-symlink": 62421, + "folder-x": 62422, + "folder": 62423, + "folder2-open": 62424, + "folder2": 62425, + "fonts": 62426, + "forward-fill": 62427, + "forward": 62428, + "front": 62429, + "fullscreen-exit": 62430, + "fullscreen": 62431, + "funnel-fill": 62432, + "funnel": 62433, + "gear-fill": 62434, + "gear-wide-connected": 62435, + "gear-wide": 62436, + "gear": 62437, + "gem": 62438, + "geo-alt-fill": 62439, + "geo-alt": 62440, + "geo-fill": 62441, + "geo": 62442, + "gift-fill": 62443, + "gift": 62444, + "github": 62445, + "globe": 62446, + "globe2": 62447, + "google": 62448, + "graph-down": 62449, + "graph-up": 62450, + "grid-1x2-fill": 62451, + "grid-1x2": 62452, + "grid-3x2-gap-fill": 62453, + "grid-3x2-gap": 62454, + "grid-3x2": 62455, + "grid-3x3-gap-fill": 62456, + "grid-3x3-gap": 62457, + "grid-3x3": 62458, + "grid-fill": 62459, + "grid": 62460, + "grip-horizontal": 62461, + "grip-vertical": 62462, + "hammer": 62463, + "hand-index-fill": 62464, + "hand-index-thumb-fill": 62465, + "hand-index-thumb": 62466, + "hand-index": 62467, + "hand-thumbs-down-fill": 62468, + "hand-thumbs-down": 62469, + "hand-thumbs-up-fill": 62470, + "hand-thumbs-up": 62471, + "handbag-fill": 62472, + "handbag": 62473, + "hash": 62474, + "hdd-fill": 62475, + "hdd-network-fill": 62476, + "hdd-network": 62477, + "hdd-rack-fill": 62478, + "hdd-rack": 62479, + "hdd-stack-fill": 62480, + "hdd-stack": 62481, + "hdd": 62482, + "headphones": 62483, + "headset": 62484, + "heart-fill": 62485, + "heart-half": 62486, + "heart": 62487, + "heptagon-fill": 62488, + "heptagon-half": 62489, + "heptagon": 62490, + "hexagon-fill": 62491, + "hexagon-half": 62492, + "hexagon": 62493, + "hourglass-bottom": 62494, + "hourglass-split": 62495, + "hourglass-top": 62496, + "hourglass": 62497, + "house-door-fill": 62498, + "house-door": 62499, + "house-fill": 62500, + "house": 62501, + "hr": 62502, + "hurricane": 62503, + "image-alt": 62504, + "image-fill": 62505, + "image": 62506, + "images": 62507, + "inbox-fill": 62508, + "inbox": 62509, + "inboxes-fill": 62510, + "inboxes": 62511, + "info-circle-fill": 62512, + "info-circle": 62513, + "info-square-fill": 62514, + "info-square": 62515, + "info": 62516, + "input-cursor-text": 62517, + "input-cursor": 62518, + "instagram": 62519, + "intersect": 62520, + "journal-album": 62521, + "journal-arrow-down": 62522, + "journal-arrow-up": 62523, + "journal-bookmark-fill": 62524, + "journal-bookmark": 62525, + "journal-check": 62526, + "journal-code": 62527, + "journal-medical": 62528, + "journal-minus": 62529, + "journal-plus": 62530, + "journal-richtext": 62531, + "journal-text": 62532, + "journal-x": 62533, + "journal": 62534, + "journals": 62535, + "joystick": 62536, + "justify-left": 62537, + "justify-right": 62538, + "justify": 62539, + "kanban-fill": 62540, + "kanban": 62541, + "key-fill": 62542, + "key": 62543, + "keyboard-fill": 62544, + "keyboard": 62545, + "ladder": 62546, + "lamp-fill": 62547, + "lamp": 62548, + "laptop-fill": 62549, + "laptop": 62550, + "layer-backward": 62551, + "layer-forward": 62552, + "layers-fill": 62553, + "layers-half": 62554, + "layers": 62555, + "layout-sidebar-inset-reverse": 62556, + "layout-sidebar-inset": 62557, + "layout-sidebar-reverse": 62558, + "layout-sidebar": 62559, + "layout-split": 62560, + "layout-text-sidebar-reverse": 62561, + "layout-text-sidebar": 62562, + "layout-text-window-reverse": 62563, + "layout-text-window": 62564, + "layout-three-columns": 62565, + "layout-wtf": 62566, + "life-preserver": 62567, + "lightbulb-fill": 62568, + "lightbulb-off-fill": 62569, + "lightbulb-off": 62570, + "lightbulb": 62571, + "lightning-charge-fill": 62572, + "lightning-charge": 62573, + "lightning-fill": 62574, + "lightning": 62575, + "link-45deg": 62576, + "link": 62577, + "linkedin": 62578, + "list-check": 62579, + "list-nested": 62580, + "list-ol": 62581, + "list-stars": 62582, + "list-task": 62583, + "list-ul": 62584, + "list": 62585, + "lock-fill": 62586, + "lock": 62587, + "mailbox": 62588, + "mailbox2": 62589, + "map-fill": 62590, + "map": 62591, + "markdown-fill": 62592, + "markdown": 62593, + "mask": 62594, + "megaphone-fill": 62595, + "megaphone": 62596, + "menu-app-fill": 62597, + "menu-app": 62598, + "menu-button-fill": 62599, + "menu-button-wide-fill": 62600, + "menu-button-wide": 62601, + "menu-button": 62602, + "menu-down": 62603, + "menu-up": 62604, + "mic-fill": 62605, + "mic-mute-fill": 62606, + "mic-mute": 62607, + "mic": 62608, + "minecart-loaded": 62609, + "minecart": 62610, + "moisture": 62611, + "moon-fill": 62612, + "moon-stars-fill": 62613, + "moon-stars": 62614, + "moon": 62615, + "mouse-fill": 62616, + "mouse": 62617, + "mouse2-fill": 62618, + "mouse2": 62619, + "mouse3-fill": 62620, + "mouse3": 62621, + "music-note-beamed": 62622, + "music-note-list": 62623, + "music-note": 62624, + "music-player-fill": 62625, + "music-player": 62626, + "newspaper": 62627, + "node-minus-fill": 62628, + "node-minus": 62629, + "node-plus-fill": 62630, + "node-plus": 62631, + "nut-fill": 62632, + "nut": 62633, + "octagon-fill": 62634, + "octagon-half": 62635, + "octagon": 62636, + "option": 62637, + "outlet": 62638, + "paint-bucket": 62639, + "palette-fill": 62640, + "palette": 62641, + "palette2": 62642, + "paperclip": 62643, + "paragraph": 62644, + "patch-check-fill": 62645, + "patch-check": 62646, + "patch-exclamation-fill": 62647, + "patch-exclamation": 62648, + "patch-minus-fill": 62649, + "patch-minus": 62650, + "patch-plus-fill": 62651, + "patch-plus": 62652, + "patch-question-fill": 62653, + "patch-question": 62654, + "pause-btn-fill": 62655, + "pause-btn": 62656, + "pause-circle-fill": 62657, + "pause-circle": 62658, + "pause-fill": 62659, + "pause": 62660, + "peace-fill": 62661, + "peace": 62662, + "pen-fill": 62663, + "pen": 62664, + "pencil-fill": 62665, + "pencil-square": 62666, + "pencil": 62667, + "pentagon-fill": 62668, + "pentagon-half": 62669, + "pentagon": 62670, + "people-fill": 62671, + "people": 62672, + "percent": 62673, + "person-badge-fill": 62674, + "person-badge": 62675, + "person-bounding-box": 62676, + "person-check-fill": 62677, + "person-check": 62678, + "person-circle": 62679, + "person-dash-fill": 62680, + "person-dash": 62681, + "person-fill": 62682, + "person-lines-fill": 62683, + "person-plus-fill": 62684, + "person-plus": 62685, + "person-square": 62686, + "person-x-fill": 62687, + "person-x": 62688, + "person": 62689, + "phone-fill": 62690, + "phone-landscape-fill": 62691, + "phone-landscape": 62692, + "phone-vibrate-fill": 62693, + "phone-vibrate": 62694, + "phone": 62695, + "pie-chart-fill": 62696, + "pie-chart": 62697, + "pin-angle-fill": 62698, + "pin-angle": 62699, + "pin-fill": 62700, + "pin": 62701, + "pip-fill": 62702, + "pip": 62703, + "play-btn-fill": 62704, + "play-btn": 62705, + "play-circle-fill": 62706, + "play-circle": 62707, + "play-fill": 62708, + "play": 62709, + "plug-fill": 62710, + "plug": 62711, + "plus-circle-dotted": 62712, + "plus-circle-fill": 62713, + "plus-circle": 62714, + "plus-square-dotted": 62715, + "plus-square-fill": 62716, + "plus-square": 62717, + "plus": 62718, + "power": 62719, + "printer-fill": 62720, + "printer": 62721, + "puzzle-fill": 62722, + "puzzle": 62723, + "question-circle-fill": 62724, + "question-circle": 62725, + "question-diamond-fill": 62726, + "question-diamond": 62727, + "question-octagon-fill": 62728, + "question-octagon": 62729, + "question-square-fill": 62730, + "question-square": 62731, + "question": 62732, + "rainbow": 62733, + "receipt-cutoff": 62734, + "receipt": 62735, + "reception-0": 62736, + "reception-1": 62737, + "reception-2": 62738, + "reception-3": 62739, + "reception-4": 62740, + "record-btn-fill": 62741, + "record-btn": 62742, + "record-circle-fill": 62743, + "record-circle": 62744, + "record-fill": 62745, + "record": 62746, + "record2-fill": 62747, + "record2": 62748, + "reply-all-fill": 62749, + "reply-all": 62750, + "reply-fill": 62751, + "reply": 62752, + "rss-fill": 62753, + "rss": 62754, + "rulers": 62755, + "save-fill": 62756, + "save": 62757, + "save2-fill": 62758, + "save2": 62759, + "scissors": 62760, + "screwdriver": 62761, + "search": 62762, + "segmented-nav": 62763, + "server": 62764, + "share-fill": 62765, + "share": 62766, + "shield-check": 62767, + "shield-exclamation": 62768, + "shield-fill-check": 62769, + "shield-fill-exclamation": 62770, + "shield-fill-minus": 62771, + "shield-fill-plus": 62772, + "shield-fill-x": 62773, + "shield-fill": 62774, + "shield-lock-fill": 62775, + "shield-lock": 62776, + "shield-minus": 62777, + "shield-plus": 62778, + "shield-shaded": 62779, + "shield-slash-fill": 62780, + "shield-slash": 62781, + "shield-x": 62782, + "shield": 62783, + "shift-fill": 62784, + "shift": 62785, + "shop-window": 62786, + "shop": 62787, + "shuffle": 62788, + "signpost-2-fill": 62789, + "signpost-2": 62790, + "signpost-fill": 62791, + "signpost-split-fill": 62792, + "signpost-split": 62793, + "signpost": 62794, + "sim-fill": 62795, + "sim": 62796, + "skip-backward-btn-fill": 62797, + "skip-backward-btn": 62798, + "skip-backward-circle-fill": 62799, + "skip-backward-circle": 62800, + "skip-backward-fill": 62801, + "skip-backward": 62802, + "skip-end-btn-fill": 62803, + "skip-end-btn": 62804, + "skip-end-circle-fill": 62805, + "skip-end-circle": 62806, + "skip-end-fill": 62807, + "skip-end": 62808, + "skip-forward-btn-fill": 62809, + "skip-forward-btn": 62810, + "skip-forward-circle-fill": 62811, + "skip-forward-circle": 62812, + "skip-forward-fill": 62813, + "skip-forward": 62814, + "skip-start-btn-fill": 62815, + "skip-start-btn": 62816, + "skip-start-circle-fill": 62817, + "skip-start-circle": 62818, + "skip-start-fill": 62819, + "skip-start": 62820, + "slack": 62821, + "slash-circle-fill": 62822, + "slash-circle": 62823, + "slash-square-fill": 62824, + "slash-square": 62825, + "slash": 62826, + "sliders": 62827, + "smartwatch": 62828, + "snow": 62829, + "snow2": 62830, + "snow3": 62831, + "sort-alpha-down-alt": 62832, + "sort-alpha-down": 62833, + "sort-alpha-up-alt": 62834, + "sort-alpha-up": 62835, + "sort-down-alt": 62836, + "sort-down": 62837, + "sort-numeric-down-alt": 62838, + "sort-numeric-down": 62839, + "sort-numeric-up-alt": 62840, + "sort-numeric-up": 62841, + "sort-up-alt": 62842, + "sort-up": 62843, + "soundwave": 62844, + "speaker-fill": 62845, + "speaker": 62846, + "speedometer": 62847, + "speedometer2": 62848, + "spellcheck": 62849, + "square-fill": 62850, + "square-half": 62851, + "square": 62852, + "stack": 62853, + "star-fill": 62854, + "star-half": 62855, + "star": 62856, + "stars": 62857, + "stickies-fill": 62858, + "stickies": 62859, + "sticky-fill": 62860, + "sticky": 62861, + "stop-btn-fill": 62862, + "stop-btn": 62863, + "stop-circle-fill": 62864, + "stop-circle": 62865, + "stop-fill": 62866, + "stop": 62867, + "stoplights-fill": 62868, + "stoplights": 62869, + "stopwatch-fill": 62870, + "stopwatch": 62871, + "subtract": 62872, + "suit-club-fill": 62873, + "suit-club": 62874, + "suit-diamond-fill": 62875, + "suit-diamond": 62876, + "suit-heart-fill": 62877, + "suit-heart": 62878, + "suit-spade-fill": 62879, + "suit-spade": 62880, + "sun-fill": 62881, + "sun": 62882, + "sunglasses": 62883, + "sunrise-fill": 62884, + "sunrise": 62885, + "sunset-fill": 62886, + "sunset": 62887, + "symmetry-horizontal": 62888, + "symmetry-vertical": 62889, + "table": 62890, + "tablet-fill": 62891, + "tablet-landscape-fill": 62892, + "tablet-landscape": 62893, + "tablet": 62894, + "tag-fill": 62895, + "tag": 62896, + "tags-fill": 62897, + "tags": 62898, + "telegram": 62899, + "telephone-fill": 62900, + "telephone-forward-fill": 62901, + "telephone-forward": 62902, + "telephone-inbound-fill": 62903, + "telephone-inbound": 62904, + "telephone-minus-fill": 62905, + "telephone-minus": 62906, + "telephone-outbound-fill": 62907, + "telephone-outbound": 62908, + "telephone-plus-fill": 62909, + "telephone-plus": 62910, + "telephone-x-fill": 62911, + "telephone-x": 62912, + "telephone": 62913, + "terminal-fill": 62914, + "terminal": 62915, + "text-center": 62916, + "text-indent-left": 62917, + "text-indent-right": 62918, + "text-left": 62919, + "text-paragraph": 62920, + "text-right": 62921, + "textarea-resize": 62922, + "textarea-t": 62923, + "textarea": 62924, + "thermometer-half": 62925, + "thermometer-high": 62926, + "thermometer-low": 62927, + "thermometer-snow": 62928, + "thermometer-sun": 62929, + "thermometer": 62930, + "three-dots-vertical": 62931, + "three-dots": 62932, + "toggle-off": 62933, + "toggle-on": 62934, + "toggle2-off": 62935, + "toggle2-on": 62936, + "toggles": 62937, + "toggles2": 62938, + "tools": 62939, + "tornado": 62940, + "trash-fill": 62941, + "trash": 62942, + "trash2-fill": 62943, + "trash2": 62944, + "tree-fill": 62945, + "tree": 62946, + "triangle-fill": 62947, + "triangle-half": 62948, + "triangle": 62949, + "trophy-fill": 62950, + "trophy": 62951, + "tropical-storm": 62952, + "truck-flatbed": 62953, + "truck": 62954, + "tsunami": 62955, + "tv-fill": 62956, + "tv": 62957, + "twitch": 62958, + "twitter": 62959, + "type-bold": 62960, + "type-h1": 62961, + "type-h2": 62962, + "type-h3": 62963, + "type-italic": 62964, + "type-strikethrough": 62965, + "type-underline": 62966, + "type": 62967, + "ui-checks-grid": 62968, + "ui-checks": 62969, + "ui-radios-grid": 62970, + "ui-radios": 62971, + "umbrella-fill": 62972, + "umbrella": 62973, + "union": 62974, + "unlock-fill": 62975, + "unlock": 62976, + "upc-scan": 62977, + "upc": 62978, + "upload": 62979, + "vector-pen": 62980, + "view-list": 62981, + "view-stacked": 62982, + "vinyl-fill": 62983, + "vinyl": 62984, + "voicemail": 62985, + "volume-down-fill": 62986, + "volume-down": 62987, + "volume-mute-fill": 62988, + "volume-mute": 62989, + "volume-off-fill": 62990, + "volume-off": 62991, + "volume-up-fill": 62992, + "volume-up": 62993, + "vr": 62994, + "wallet-fill": 62995, + "wallet": 62996, + "wallet2": 62997, + "watch": 62998, + "water": 62999, + "whatsapp": 63000, + "wifi-1": 63001, + "wifi-2": 63002, + "wifi-off": 63003, + "wifi": 63004, + "wind": 63005, + "window-dock": 63006, + "window-sidebar": 63007, + "window": 63008, + "wrench": 63009, + "x-circle-fill": 63010, + "x-circle": 63011, + "x-diamond-fill": 63012, + "x-diamond": 63013, + "x-octagon-fill": 63014, + "x-octagon": 63015, + "x-square-fill": 63016, + "x-square": 63017, + "x": 63018, + "youtube": 63019, + "zoom-in": 63020, + "zoom-out": 63021, + "bank": 63022, + "bank2": 63023, + "bell-slash-fill": 63024, + "bell-slash": 63025, + "cash-coin": 63026, + "check-lg": 63027, + "coin": 63028, + "currency-bitcoin": 63029, + "currency-dollar": 63030, + "currency-euro": 63031, + "currency-exchange": 63032, + "currency-pound": 63033, + "currency-yen": 63034, + "dash-lg": 63035, + "exclamation-lg": 63036, + "file-earmark-pdf-fill": 63037, + "file-earmark-pdf": 63038, + "file-pdf-fill": 63039, + "file-pdf": 63040, + "gender-ambiguous": 63041, + "gender-female": 63042, + "gender-male": 63043, + "gender-trans": 63044, + "headset-vr": 63045, + "info-lg": 63046, + "mastodon": 63047, + "messenger": 63048, + "piggy-bank-fill": 63049, + "piggy-bank": 63050, + "pin-map-fill": 63051, + "pin-map": 63052, + "plus-lg": 63053, + "question-lg": 63054, + "recycle": 63055, + "reddit": 63056, + "safe-fill": 63057, + "safe2-fill": 63058, + "safe2": 63059, + "sd-card-fill": 63060, + "sd-card": 63061, + "skype": 63062, + "slash-lg": 63063, + "translate": 63064, + "x-lg": 63065, + "safe": 63066, + "apple": 63067, + "microsoft": 63069, + "windows": 63070, + "behance": 63068, + "dribbble": 63071, + "line": 63072, + "medium": 63073, + "paypal": 63074, + "pinterest": 63075, + "signal": 63076, + "snapchat": 63077, + "spotify": 63078, + "stack-overflow": 63079, + "strava": 63080, + "wordpress": 63081, + "vimeo": 63082, + "activity": 63083, + "easel2-fill": 63084, + "easel2": 63085, + "easel3-fill": 63086, + "easel3": 63087, + "fan": 63088, + "fingerprint": 63089, + "graph-down-arrow": 63090, + "graph-up-arrow": 63091, + "hypnotize": 63092, + "magic": 63093, + "person-rolodex": 63094, + "person-video": 63095, + "person-video2": 63096, + "person-video3": 63097, + "person-workspace": 63098, + "radioactive": 63099, + "webcam-fill": 63100, + "webcam": 63101, + "yin-yang": 63102, + "bandaid-fill": 63104, + "bandaid": 63105, + "bluetooth": 63106, + "body-text": 63107, + "boombox": 63108, + "boxes": 63109, + "dpad-fill": 63110, + "dpad": 63111, + "ear-fill": 63112, + "ear": 63113, + "envelope-check-fill": 63115, + "envelope-check": 63116, + "envelope-dash-fill": 63118, + "envelope-dash": 63119, + "envelope-exclamation-fill": 63121, + "envelope-exclamation": 63122, + "envelope-plus-fill": 63123, + "envelope-plus": 63124, + "envelope-slash-fill": 63126, + "envelope-slash": 63127, + "envelope-x-fill": 63129, + "envelope-x": 63130, + "explicit-fill": 63131, + "explicit": 63132, + "git": 63133, + "infinity": 63134, + "list-columns-reverse": 63135, + "list-columns": 63136, + "meta": 63137, + "nintendo-switch": 63140, + "pc-display-horizontal": 63141, + "pc-display": 63142, + "pc-horizontal": 63143, + "pc": 63144, + "playstation": 63145, + "plus-slash-minus": 63146, + "projector-fill": 63147, + "projector": 63148, + "qr-code-scan": 63149, + "qr-code": 63150, + "quora": 63151, + "quote": 63152, + "robot": 63153, + "send-check-fill": 63154, + "send-check": 63155, + "send-dash-fill": 63156, + "send-dash": 63157, + "send-exclamation-fill": 63159, + "send-exclamation": 63160, + "send-fill": 63161, + "send-plus-fill": 63162, + "send-plus": 63163, + "send-slash-fill": 63164, + "send-slash": 63165, + "send-x-fill": 63166, + "send-x": 63167, + "send": 63168, + "steam": 63169, + "terminal-dash": 63171, + "terminal-plus": 63172, + "terminal-split": 63173, + "ticket-detailed-fill": 63174, + "ticket-detailed": 63175, + "ticket-fill": 63176, + "ticket-perforated-fill": 63177, + "ticket-perforated": 63178, + "ticket": 63179, + "tiktok": 63180, + "window-dash": 63181, + "window-desktop": 63182, + "window-fullscreen": 63183, + "window-plus": 63184, + "window-split": 63185, + "window-stack": 63186, + "window-x": 63187, + "xbox": 63188, + "ethernet": 63189, + "hdmi-fill": 63190, + "hdmi": 63191, + "usb-c-fill": 63192, + "usb-c": 63193, + "usb-fill": 63194, + "usb-plug-fill": 63195, + "usb-plug": 63196, + "usb-symbol": 63197, + "usb": 63198, + "boombox-fill": 63199, + "displayport": 63201, + "gpu-card": 63202, + "memory": 63203, + "modem-fill": 63204, + "modem": 63205, + "motherboard-fill": 63206, + "motherboard": 63207, + "optical-audio-fill": 63208, + "optical-audio": 63209, + "pci-card": 63210, + "router-fill": 63211, + "router": 63212, + "thunderbolt-fill": 63215, + "thunderbolt": 63216, + "usb-drive-fill": 63217, + "usb-drive": 63218, + "usb-micro-fill": 63219, + "usb-micro": 63220, + "usb-mini-fill": 63221, + "usb-mini": 63222, + "cloud-haze2": 63223, + "device-hdd-fill": 63224, + "device-hdd": 63225, + "device-ssd-fill": 63226, + "device-ssd": 63227, + "displayport-fill": 63228, + "mortarboard-fill": 63229, + "mortarboard": 63230, + "terminal-x": 63231, + "arrow-through-heart-fill": 63232, + "arrow-through-heart": 63233, + "badge-sd-fill": 63234, + "badge-sd": 63235, + "bag-heart-fill": 63236, + "bag-heart": 63237, + "balloon-fill": 63238, + "balloon-heart-fill": 63239, + "balloon-heart": 63240, + "balloon": 63241, + "box2-fill": 63242, + "box2-heart-fill": 63243, + "box2-heart": 63244, + "box2": 63245, + "braces-asterisk": 63246, + "calendar-heart-fill": 63247, + "calendar-heart": 63248, + "calendar2-heart-fill": 63249, + "calendar2-heart": 63250, + "chat-heart-fill": 63251, + "chat-heart": 63252, + "chat-left-heart-fill": 63253, + "chat-left-heart": 63254, + "chat-right-heart-fill": 63255, + "chat-right-heart": 63256, + "chat-square-heart-fill": 63257, + "chat-square-heart": 63258, + "clipboard-check-fill": 63259, + "clipboard-data-fill": 63260, + "clipboard-fill": 63261, + "clipboard-heart-fill": 63262, + "clipboard-heart": 63263, + "clipboard-minus-fill": 63264, + "clipboard-plus-fill": 63265, + "clipboard-pulse": 63266, + "clipboard-x-fill": 63267, + "clipboard2-check-fill": 63268, + "clipboard2-check": 63269, + "clipboard2-data-fill": 63270, + "clipboard2-data": 63271, + "clipboard2-fill": 63272, + "clipboard2-heart-fill": 63273, + "clipboard2-heart": 63274, + "clipboard2-minus-fill": 63275, + "clipboard2-minus": 63276, + "clipboard2-plus-fill": 63277, + "clipboard2-plus": 63278, + "clipboard2-pulse-fill": 63279, + "clipboard2-pulse": 63280, + "clipboard2-x-fill": 63281, + "clipboard2-x": 63282, + "clipboard2": 63283, + "emoji-kiss-fill": 63284, + "emoji-kiss": 63285, + "envelope-heart-fill": 63286, + "envelope-heart": 63287, + "envelope-open-heart-fill": 63288, + "envelope-open-heart": 63289, + "envelope-paper-fill": 63290, + "envelope-paper-heart-fill": 63291, + "envelope-paper-heart": 63292, + "envelope-paper": 63293, + "filetype-aac": 63294, + "filetype-ai": 63295, + "filetype-bmp": 63296, + "filetype-cs": 63297, + "filetype-css": 63298, + "filetype-csv": 63299, + "filetype-doc": 63300, + "filetype-docx": 63301, + "filetype-exe": 63302, + "filetype-gif": 63303, + "filetype-heic": 63304, + "filetype-html": 63305, + "filetype-java": 63306, + "filetype-jpg": 63307, + "filetype-js": 63308, + "filetype-jsx": 63309, + "filetype-key": 63310, + "filetype-m4p": 63311, + "filetype-md": 63312, + "filetype-mdx": 63313, + "filetype-mov": 63314, + "filetype-mp3": 63315, + "filetype-mp4": 63316, + "filetype-otf": 63317, + "filetype-pdf": 63318, + "filetype-php": 63319, + "filetype-png": 63320, + "filetype-ppt": 63322, + "filetype-psd": 63323, + "filetype-py": 63324, + "filetype-raw": 63325, + "filetype-rb": 63326, + "filetype-sass": 63327, + "filetype-scss": 63328, + "filetype-sh": 63329, + "filetype-svg": 63330, + "filetype-tiff": 63331, + "filetype-tsx": 63332, + "filetype-ttf": 63333, + "filetype-txt": 63334, + "filetype-wav": 63335, + "filetype-woff": 63336, + "filetype-xls": 63338, + "filetype-xml": 63339, + "filetype-yml": 63340, + "heart-arrow": 63341, + "heart-pulse-fill": 63342, + "heart-pulse": 63343, + "heartbreak-fill": 63344, + "heartbreak": 63345, + "hearts": 63346, + "hospital-fill": 63347, + "hospital": 63348, + "house-heart-fill": 63349, + "house-heart": 63350, + "incognito": 63351, + "magnet-fill": 63352, + "magnet": 63353, + "person-heart": 63354, + "person-hearts": 63355, + "phone-flip": 63356, + "plugin": 63357, + "postage-fill": 63358, + "postage-heart-fill": 63359, + "postage-heart": 63360, + "postage": 63361, + "postcard-fill": 63362, + "postcard-heart-fill": 63363, + "postcard-heart": 63364, + "postcard": 63365, + "search-heart-fill": 63366, + "search-heart": 63367, + "sliders2-vertical": 63368, + "sliders2": 63369, + "trash3-fill": 63370, + "trash3": 63371, + "valentine": 63372, + "valentine2": 63373, + "wrench-adjustable-circle-fill": 63374, + "wrench-adjustable-circle": 63375, + "wrench-adjustable": 63376, + "filetype-json": 63377, + "filetype-pptx": 63378, + "filetype-xlsx": 63379, + "1-circle-fill": 63382, + "1-circle": 63383, + "1-square-fill": 63384, + "1-square": 63385, + "2-circle-fill": 63388, + "2-circle": 63389, + "2-square-fill": 63390, + "2-square": 63391, + "3-circle-fill": 63394, + "3-circle": 63395, + "3-square-fill": 63396, + "3-square": 63397, + "4-circle-fill": 63400, + "4-circle": 63401, + "4-square-fill": 63402, + "4-square": 63403, + "5-circle-fill": 63406, + "5-circle": 63407, + "5-square-fill": 63408, + "5-square": 63409, + "6-circle-fill": 63412, + "6-circle": 63413, + "6-square-fill": 63414, + "6-square": 63415, + "7-circle-fill": 63418, + "7-circle": 63419, + "7-square-fill": 63420, + "7-square": 63421, + "8-circle-fill": 63424, + "8-circle": 63425, + "8-square-fill": 63426, + "8-square": 63427, + "9-circle-fill": 63430, + "9-circle": 63431, + "9-square-fill": 63432, + "9-square": 63433, + "airplane-engines-fill": 63434, + "airplane-engines": 63435, + "airplane-fill": 63436, + "airplane": 63437, + "alexa": 63438, + "alipay": 63439, + "android": 63440, + "android2": 63441, + "box-fill": 63442, + "box-seam-fill": 63443, + "browser-chrome": 63444, + "browser-edge": 63445, + "browser-firefox": 63446, + "browser-safari": 63447, + "c-circle-fill": 63450, + "c-circle": 63451, + "c-square-fill": 63452, + "c-square": 63453, + "capsule-pill": 63454, + "capsule": 63455, + "car-front-fill": 63456, + "car-front": 63457, + "cassette-fill": 63458, + "cassette": 63459, + "cc-circle-fill": 63462, + "cc-circle": 63463, + "cc-square-fill": 63464, + "cc-square": 63465, + "cup-hot-fill": 63466, + "cup-hot": 63467, + "currency-rupee": 63468, + "dropbox": 63469, + "escape": 63470, + "fast-forward-btn-fill": 63471, + "fast-forward-btn": 63472, + "fast-forward-circle-fill": 63473, + "fast-forward-circle": 63474, + "fast-forward-fill": 63475, + "fast-forward": 63476, + "filetype-sql": 63477, + "fire": 63478, + "google-play": 63479, + "h-circle-fill": 63482, + "h-circle": 63483, + "h-square-fill": 63484, + "h-square": 63485, + "indent": 63486, + "lungs-fill": 63487, + "lungs": 63488, + "microsoft-teams": 63489, + "p-circle-fill": 63492, + "p-circle": 63493, + "p-square-fill": 63494, + "p-square": 63495, + "pass-fill": 63496, + "pass": 63497, + "prescription": 63498, + "prescription2": 63499, + "r-circle-fill": 63502, + "r-circle": 63503, + "r-square-fill": 63504, + "r-square": 63505, + "repeat-1": 63506, + "repeat": 63507, + "rewind-btn-fill": 63508, + "rewind-btn": 63509, + "rewind-circle-fill": 63510, + "rewind-circle": 63511, + "rewind-fill": 63512, + "rewind": 63513, + "train-freight-front-fill": 63514, + "train-freight-front": 63515, + "train-front-fill": 63516, + "train-front": 63517, + "train-lightrail-front-fill": 63518, + "train-lightrail-front": 63519, + "truck-front-fill": 63520, + "truck-front": 63521, + "ubuntu": 63522, + "unindent": 63523, + "unity": 63524, + "universal-access-circle": 63525, + "universal-access": 63526, + "virus": 63527, + "virus2": 63528, + "wechat": 63529, + "yelp": 63530, + "sign-stop-fill": 63531, + "sign-stop-lights-fill": 63532, + "sign-stop-lights": 63533, + "sign-stop": 63534, + "sign-turn-left-fill": 63535, + "sign-turn-left": 63536, + "sign-turn-right-fill": 63537, + "sign-turn-right": 63538, + "sign-turn-slight-left-fill": 63539, + "sign-turn-slight-left": 63540, + "sign-turn-slight-right-fill": 63541, + "sign-turn-slight-right": 63542, + "sign-yield-fill": 63543, + "sign-yield": 63544, + "ev-station-fill": 63545, + "ev-station": 63546, + "fuel-pump-diesel-fill": 63547, + "fuel-pump-diesel": 63548, + "fuel-pump-fill": 63549, + "fuel-pump": 63550, + "0-circle-fill": 63551, + "0-circle": 63552, + "0-square-fill": 63553, + "0-square": 63554, + "rocket-fill": 63555, + "rocket-takeoff-fill": 63556, + "rocket-takeoff": 63557, + "rocket": 63558, + "stripe": 63559, + "subscript": 63560, + "superscript": 63561, + "trello": 63562, + "envelope-at-fill": 63563, + "envelope-at": 63564, + "regex": 63565, + "text-wrap": 63566, + "sign-dead-end-fill": 63567, + "sign-dead-end": 63568, + "sign-do-not-enter-fill": 63569, + "sign-do-not-enter": 63570, + "sign-intersection-fill": 63571, + "sign-intersection-side-fill": 63572, + "sign-intersection-side": 63573, + "sign-intersection-t-fill": 63574, + "sign-intersection-t": 63575, + "sign-intersection-y-fill": 63576, + "sign-intersection-y": 63577, + "sign-intersection": 63578, + "sign-merge-left-fill": 63579, + "sign-merge-left": 63580, + "sign-merge-right-fill": 63581, + "sign-merge-right": 63582, + "sign-no-left-turn-fill": 63583, + "sign-no-left-turn": 63584, + "sign-no-parking-fill": 63585, + "sign-no-parking": 63586, + "sign-no-right-turn-fill": 63587, + "sign-no-right-turn": 63588, + "sign-railroad-fill": 63589, + "sign-railroad": 63590, + "building-add": 63591, + "building-check": 63592, + "building-dash": 63593, + "building-down": 63594, + "building-exclamation": 63595, + "building-fill-add": 63596, + "building-fill-check": 63597, + "building-fill-dash": 63598, + "building-fill-down": 63599, + "building-fill-exclamation": 63600, + "building-fill-gear": 63601, + "building-fill-lock": 63602, + "building-fill-slash": 63603, + "building-fill-up": 63604, + "building-fill-x": 63605, + "building-fill": 63606, + "building-gear": 63607, + "building-lock": 63608, + "building-slash": 63609, + "building-up": 63610, + "building-x": 63611, + "buildings-fill": 63612, + "buildings": 63613, + "bus-front-fill": 63614, + "bus-front": 63615, + "ev-front-fill": 63616, + "ev-front": 63617, + "globe-americas": 63618, + "globe-asia-australia": 63619, + "globe-central-south-asia": 63620, + "globe-europe-africa": 63621, + "house-add-fill": 63622, + "house-add": 63623, + "house-check-fill": 63624, + "house-check": 63625, + "house-dash-fill": 63626, + "house-dash": 63627, + "house-down-fill": 63628, + "house-down": 63629, + "house-exclamation-fill": 63630, + "house-exclamation": 63631, + "house-gear-fill": 63632, + "house-gear": 63633, + "house-lock-fill": 63634, + "house-lock": 63635, + "house-slash-fill": 63636, + "house-slash": 63637, + "house-up-fill": 63638, + "house-up": 63639, + "house-x-fill": 63640, + "house-x": 63641, + "person-add": 63642, + "person-down": 63643, + "person-exclamation": 63644, + "person-fill-add": 63645, + "person-fill-check": 63646, + "person-fill-dash": 63647, + "person-fill-down": 63648, + "person-fill-exclamation": 63649, + "person-fill-gear": 63650, + "person-fill-lock": 63651, + "person-fill-slash": 63652, + "person-fill-up": 63653, + "person-fill-x": 63654, + "person-gear": 63655, + "person-lock": 63656, + "person-slash": 63657, + "person-up": 63658, + "scooter": 63659, + "taxi-front-fill": 63660, + "taxi-front": 63661, + "amd": 63662, + "database-add": 63663, + "database-check": 63664, + "database-dash": 63665, + "database-down": 63666, + "database-exclamation": 63667, + "database-fill-add": 63668, + "database-fill-check": 63669, + "database-fill-dash": 63670, + "database-fill-down": 63671, + "database-fill-exclamation": 63672, + "database-fill-gear": 63673, + "database-fill-lock": 63674, + "database-fill-slash": 63675, + "database-fill-up": 63676, + "database-fill-x": 63677, + "database-fill": 63678, + "database-gear": 63679, + "database-lock": 63680, + "database-slash": 63681, + "database-up": 63682, + "database-x": 63683, + "database": 63684, + "houses-fill": 63685, + "houses": 63686, + "nvidia": 63687, + "person-vcard-fill": 63688, + "person-vcard": 63689, + "sina-weibo": 63690, + "tencent-qq": 63691, + "wikipedia": 63692, + "alphabet-uppercase": 62117, + "alphabet": 63114, + "amazon": 63117, + "arrows-collapse-vertical": 63120, + "arrows-expand-vertical": 63125, + "arrows-vertical": 63128, + "arrows": 63138, + "ban-fill": 63139, + "ban": 63158, + "bing": 63170, + "cake": 63200, + "cake2": 63213, + "cookie": 63214, + "copy": 63321, + "crosshair": 63337, + "crosshair2": 63380, + "emoji-astonished-fill": 63381, + "emoji-astonished": 63386, + "emoji-grimace-fill": 63387, + "emoji-grimace": 63392, + "emoji-grin-fill": 63393, + "emoji-grin": 63398, + "emoji-surprise-fill": 63399, + "emoji-surprise": 63404, + "emoji-tear-fill": 63405, + "emoji-tear": 63410, + "envelope-arrow-down-fill": 63411, + "envelope-arrow-down": 63416, + "envelope-arrow-up-fill": 63417, + "envelope-arrow-up": 63422, + "feather": 63423, + "feather2": 63428, + "floppy-fill": 63429, + "floppy": 63448, + "floppy2-fill": 63449, + "floppy2": 63460, + "gitlab": 63461, + "highlighter": 63480, + "marker-tip": 63490, + "nvme-fill": 63491, + "nvme": 63500, + "opencollective": 63501, + "pci-card-network": 63693, + "pci-card-sound": 63694, + "radar": 63695, + "send-arrow-down-fill": 63696, + "send-arrow-down": 63697, + "send-arrow-up-fill": 63698, + "send-arrow-up": 63699, + "sim-slash-fill": 63700, + "sim-slash": 63701, + "sourceforge": 63702, + "substack": 63703, + "threads-fill": 63704, + "threads": 63705, + "transparency": 63706, + "twitter-x": 63707, + "type-h4": 63708, + "type-h5": 63709, + "type-h6": 63710, + "backpack-fill": 63711, + "backpack": 63712, + "backpack2-fill": 63713, + "backpack2": 63714, + "backpack3-fill": 63715, + "backpack3": 63716, + "backpack4-fill": 63717, + "backpack4": 63718, + "brilliance": 63719, + "cake-fill": 63720, + "cake2-fill": 63721, + "duffle-fill": 63722, + "duffle": 63723, + "exposure": 63724, + "gender-neuter": 63725, + "highlights": 63726, + "luggage-fill": 63727, + "luggage": 63728, + "mailbox-flag": 63729, + "mailbox2-flag": 63730, + "noise-reduction": 63731, + "passport-fill": 63732, + "passport": 63733, + "person-arms-up": 63734, + "person-raised-hand": 63735, + "person-standing-dress": 63736, + "person-standing": 63737, + "person-walking": 63738, + "person-wheelchair": 63739, + "shadows": 63740, + "suitcase-fill": 63741, + "suitcase-lg-fill": 63742, + "suitcase-lg": 63743, + "suitcase": 63744, + "suitcase2-fill": 63745, + "suitcase2": 63746, + "vignette": 63747 +} diff --git a/src/assets/fonts/bootstrap-icons.min.css b/src/assets/fonts/bootstrap-icons.min.css new file mode 100644 index 00000000..bbedc7e1 --- /dev/null +++ b/src/assets/fonts/bootstrap-icons.min.css @@ -0,0 +1,6178 @@ +/*! + * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/) + * Copyright 2019-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ +@font-face { + font-display: block; + font-family: bootstrap-icons; + src: + url('bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6') + format('woff2'), + url('bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6') + format('woff'); +} +.bi::before, +[class*=' bi-']::before, +[class^='bi-']::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: 400 !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -0.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.bi-123::before { + content: '\f67f'; +} +.bi-alarm-fill::before { + content: '\f101'; +} +.bi-alarm::before { + content: '\f102'; +} +.bi-align-bottom::before { + content: '\f103'; +} +.bi-align-center::before { + content: '\f104'; +} +.bi-align-end::before { + content: '\f105'; +} +.bi-align-middle::before { + content: '\f106'; +} +.bi-align-start::before { + content: '\f107'; +} +.bi-align-top::before { + content: '\f108'; +} +.bi-alt::before { + content: '\f109'; +} +.bi-app-indicator::before { + content: '\f10a'; +} +.bi-app::before { + content: '\f10b'; +} +.bi-archive-fill::before { + content: '\f10c'; +} +.bi-archive::before { + content: '\f10d'; +} +.bi-arrow-90deg-down::before { + content: '\f10e'; +} +.bi-arrow-90deg-left::before { + content: '\f10f'; +} +.bi-arrow-90deg-right::before { + content: '\f110'; +} +.bi-arrow-90deg-up::before { + content: '\f111'; +} +.bi-arrow-bar-down::before { + content: '\f112'; +} +.bi-arrow-bar-left::before { + content: '\f113'; +} +.bi-arrow-bar-right::before { + content: '\f114'; +} +.bi-arrow-bar-up::before { + content: '\f115'; +} +.bi-arrow-clockwise::before { + content: '\f116'; +} +.bi-arrow-counterclockwise::before { + content: '\f117'; +} +.bi-arrow-down-circle-fill::before { + content: '\f118'; +} +.bi-arrow-down-circle::before { + content: '\f119'; +} +.bi-arrow-down-left-circle-fill::before { + content: '\f11a'; +} +.bi-arrow-down-left-circle::before { + content: '\f11b'; +} +.bi-arrow-down-left-square-fill::before { + content: '\f11c'; +} +.bi-arrow-down-left-square::before { + content: '\f11d'; +} +.bi-arrow-down-left::before { + content: '\f11e'; +} +.bi-arrow-down-right-circle-fill::before { + content: '\f11f'; +} +.bi-arrow-down-right-circle::before { + content: '\f120'; +} +.bi-arrow-down-right-square-fill::before { + content: '\f121'; +} +.bi-arrow-down-right-square::before { + content: '\f122'; +} +.bi-arrow-down-right::before { + content: '\f123'; +} +.bi-arrow-down-short::before { + content: '\f124'; +} +.bi-arrow-down-square-fill::before { + content: '\f125'; +} +.bi-arrow-down-square::before { + content: '\f126'; +} +.bi-arrow-down-up::before { + content: '\f127'; +} +.bi-arrow-down::before { + content: '\f128'; +} +.bi-arrow-left-circle-fill::before { + content: '\f129'; +} +.bi-arrow-left-circle::before { + content: '\f12a'; +} +.bi-arrow-left-right::before { + content: '\f12b'; +} +.bi-arrow-left-short::before { + content: '\f12c'; +} +.bi-arrow-left-square-fill::before { + content: '\f12d'; +} +.bi-arrow-left-square::before { + content: '\f12e'; +} +.bi-arrow-left::before { + content: '\f12f'; +} +.bi-arrow-repeat::before { + content: '\f130'; +} +.bi-arrow-return-left::before { + content: '\f131'; +} +.bi-arrow-return-right::before { + content: '\f132'; +} +.bi-arrow-right-circle-fill::before { + content: '\f133'; +} +.bi-arrow-right-circle::before { + content: '\f134'; +} +.bi-arrow-right-short::before { + content: '\f135'; +} +.bi-arrow-right-square-fill::before { + content: '\f136'; +} +.bi-arrow-right-square::before { + content: '\f137'; +} +.bi-arrow-right::before { + content: '\f138'; +} +.bi-arrow-up-circle-fill::before { + content: '\f139'; +} +.bi-arrow-up-circle::before { + content: '\f13a'; +} +.bi-arrow-up-left-circle-fill::before { + content: '\f13b'; +} +.bi-arrow-up-left-circle::before { + content: '\f13c'; +} +.bi-arrow-up-left-square-fill::before { + content: '\f13d'; +} +.bi-arrow-up-left-square::before { + content: '\f13e'; +} +.bi-arrow-up-left::before { + content: '\f13f'; +} +.bi-arrow-up-right-circle-fill::before { + content: '\f140'; +} +.bi-arrow-up-right-circle::before { + content: '\f141'; +} +.bi-arrow-up-right-square-fill::before { + content: '\f142'; +} +.bi-arrow-up-right-square::before { + content: '\f143'; +} +.bi-arrow-up-right::before { + content: '\f144'; +} +.bi-arrow-up-short::before { + content: '\f145'; +} +.bi-arrow-up-square-fill::before { + content: '\f146'; +} +.bi-arrow-up-square::before { + content: '\f147'; +} +.bi-arrow-up::before { + content: '\f148'; +} +.bi-arrows-angle-contract::before { + content: '\f149'; +} +.bi-arrows-angle-expand::before { + content: '\f14a'; +} +.bi-arrows-collapse::before { + content: '\f14b'; +} +.bi-arrows-expand::before { + content: '\f14c'; +} +.bi-arrows-fullscreen::before { + content: '\f14d'; +} +.bi-arrows-move::before { + content: '\f14e'; +} +.bi-aspect-ratio-fill::before { + content: '\f14f'; +} +.bi-aspect-ratio::before { + content: '\f150'; +} +.bi-asterisk::before { + content: '\f151'; +} +.bi-at::before { + content: '\f152'; +} +.bi-award-fill::before { + content: '\f153'; +} +.bi-award::before { + content: '\f154'; +} +.bi-back::before { + content: '\f155'; +} +.bi-backspace-fill::before { + content: '\f156'; +} +.bi-backspace-reverse-fill::before { + content: '\f157'; +} +.bi-backspace-reverse::before { + content: '\f158'; +} +.bi-backspace::before { + content: '\f159'; +} +.bi-badge-3d-fill::before { + content: '\f15a'; +} +.bi-badge-3d::before { + content: '\f15b'; +} +.bi-badge-4k-fill::before { + content: '\f15c'; +} +.bi-badge-4k::before { + content: '\f15d'; +} +.bi-badge-8k-fill::before { + content: '\f15e'; +} +.bi-badge-8k::before { + content: '\f15f'; +} +.bi-badge-ad-fill::before { + content: '\f160'; +} +.bi-badge-ad::before { + content: '\f161'; +} +.bi-badge-ar-fill::before { + content: '\f162'; +} +.bi-badge-ar::before { + content: '\f163'; +} +.bi-badge-cc-fill::before { + content: '\f164'; +} +.bi-badge-cc::before { + content: '\f165'; +} +.bi-badge-hd-fill::before { + content: '\f166'; +} +.bi-badge-hd::before { + content: '\f167'; +} +.bi-badge-tm-fill::before { + content: '\f168'; +} +.bi-badge-tm::before { + content: '\f169'; +} +.bi-badge-vo-fill::before { + content: '\f16a'; +} +.bi-badge-vo::before { + content: '\f16b'; +} +.bi-badge-vr-fill::before { + content: '\f16c'; +} +.bi-badge-vr::before { + content: '\f16d'; +} +.bi-badge-wc-fill::before { + content: '\f16e'; +} +.bi-badge-wc::before { + content: '\f16f'; +} +.bi-bag-check-fill::before { + content: '\f170'; +} +.bi-bag-check::before { + content: '\f171'; +} +.bi-bag-dash-fill::before { + content: '\f172'; +} +.bi-bag-dash::before { + content: '\f173'; +} +.bi-bag-fill::before { + content: '\f174'; +} +.bi-bag-plus-fill::before { + content: '\f175'; +} +.bi-bag-plus::before { + content: '\f176'; +} +.bi-bag-x-fill::before { + content: '\f177'; +} +.bi-bag-x::before { + content: '\f178'; +} +.bi-bag::before { + content: '\f179'; +} +.bi-bar-chart-fill::before { + content: '\f17a'; +} +.bi-bar-chart-line-fill::before { + content: '\f17b'; +} +.bi-bar-chart-line::before { + content: '\f17c'; +} +.bi-bar-chart-steps::before { + content: '\f17d'; +} +.bi-bar-chart::before { + content: '\f17e'; +} +.bi-basket-fill::before { + content: '\f17f'; +} +.bi-basket::before { + content: '\f180'; +} +.bi-basket2-fill::before { + content: '\f181'; +} +.bi-basket2::before { + content: '\f182'; +} +.bi-basket3-fill::before { + content: '\f183'; +} +.bi-basket3::before { + content: '\f184'; +} +.bi-battery-charging::before { + content: '\f185'; +} +.bi-battery-full::before { + content: '\f186'; +} +.bi-battery-half::before { + content: '\f187'; +} +.bi-battery::before { + content: '\f188'; +} +.bi-bell-fill::before { + content: '\f189'; +} +.bi-bell::before { + content: '\f18a'; +} +.bi-bezier::before { + content: '\f18b'; +} +.bi-bezier2::before { + content: '\f18c'; +} +.bi-bicycle::before { + content: '\f18d'; +} +.bi-binoculars-fill::before { + content: '\f18e'; +} +.bi-binoculars::before { + content: '\f18f'; +} +.bi-blockquote-left::before { + content: '\f190'; +} +.bi-blockquote-right::before { + content: '\f191'; +} +.bi-book-fill::before { + content: '\f192'; +} +.bi-book-half::before { + content: '\f193'; +} +.bi-book::before { + content: '\f194'; +} +.bi-bookmark-check-fill::before { + content: '\f195'; +} +.bi-bookmark-check::before { + content: '\f196'; +} +.bi-bookmark-dash-fill::before { + content: '\f197'; +} +.bi-bookmark-dash::before { + content: '\f198'; +} +.bi-bookmark-fill::before { + content: '\f199'; +} +.bi-bookmark-heart-fill::before { + content: '\f19a'; +} +.bi-bookmark-heart::before { + content: '\f19b'; +} +.bi-bookmark-plus-fill::before { + content: '\f19c'; +} +.bi-bookmark-plus::before { + content: '\f19d'; +} +.bi-bookmark-star-fill::before { + content: '\f19e'; +} +.bi-bookmark-star::before { + content: '\f19f'; +} +.bi-bookmark-x-fill::before { + content: '\f1a0'; +} +.bi-bookmark-x::before { + content: '\f1a1'; +} +.bi-bookmark::before { + content: '\f1a2'; +} +.bi-bookmarks-fill::before { + content: '\f1a3'; +} +.bi-bookmarks::before { + content: '\f1a4'; +} +.bi-bookshelf::before { + content: '\f1a5'; +} +.bi-bootstrap-fill::before { + content: '\f1a6'; +} +.bi-bootstrap-reboot::before { + content: '\f1a7'; +} +.bi-bootstrap::before { + content: '\f1a8'; +} +.bi-border-all::before { + content: '\f1a9'; +} +.bi-border-bottom::before { + content: '\f1aa'; +} +.bi-border-center::before { + content: '\f1ab'; +} +.bi-border-inner::before { + content: '\f1ac'; +} +.bi-border-left::before { + content: '\f1ad'; +} +.bi-border-middle::before { + content: '\f1ae'; +} +.bi-border-outer::before { + content: '\f1af'; +} +.bi-border-right::before { + content: '\f1b0'; +} +.bi-border-style::before { + content: '\f1b1'; +} +.bi-border-top::before { + content: '\f1b2'; +} +.bi-border-width::before { + content: '\f1b3'; +} +.bi-border::before { + content: '\f1b4'; +} +.bi-bounding-box-circles::before { + content: '\f1b5'; +} +.bi-bounding-box::before { + content: '\f1b6'; +} +.bi-box-arrow-down-left::before { + content: '\f1b7'; +} +.bi-box-arrow-down-right::before { + content: '\f1b8'; +} +.bi-box-arrow-down::before { + content: '\f1b9'; +} +.bi-box-arrow-in-down-left::before { + content: '\f1ba'; +} +.bi-box-arrow-in-down-right::before { + content: '\f1bb'; +} +.bi-box-arrow-in-down::before { + content: '\f1bc'; +} +.bi-box-arrow-in-left::before { + content: '\f1bd'; +} +.bi-box-arrow-in-right::before { + content: '\f1be'; +} +.bi-box-arrow-in-up-left::before { + content: '\f1bf'; +} +.bi-box-arrow-in-up-right::before { + content: '\f1c0'; +} +.bi-box-arrow-in-up::before { + content: '\f1c1'; +} +.bi-box-arrow-left::before { + content: '\f1c2'; +} +.bi-box-arrow-right::before { + content: '\f1c3'; +} +.bi-box-arrow-up-left::before { + content: '\f1c4'; +} +.bi-box-arrow-up-right::before { + content: '\f1c5'; +} +.bi-box-arrow-up::before { + content: '\f1c6'; +} +.bi-box-seam::before { + content: '\f1c7'; +} +.bi-box::before { + content: '\f1c8'; +} +.bi-braces::before { + content: '\f1c9'; +} +.bi-bricks::before { + content: '\f1ca'; +} +.bi-briefcase-fill::before { + content: '\f1cb'; +} +.bi-briefcase::before { + content: '\f1cc'; +} +.bi-brightness-alt-high-fill::before { + content: '\f1cd'; +} +.bi-brightness-alt-high::before { + content: '\f1ce'; +} +.bi-brightness-alt-low-fill::before { + content: '\f1cf'; +} +.bi-brightness-alt-low::before { + content: '\f1d0'; +} +.bi-brightness-high-fill::before { + content: '\f1d1'; +} +.bi-brightness-high::before { + content: '\f1d2'; +} +.bi-brightness-low-fill::before { + content: '\f1d3'; +} +.bi-brightness-low::before { + content: '\f1d4'; +} +.bi-broadcast-pin::before { + content: '\f1d5'; +} +.bi-broadcast::before { + content: '\f1d6'; +} +.bi-brush-fill::before { + content: '\f1d7'; +} +.bi-brush::before { + content: '\f1d8'; +} +.bi-bucket-fill::before { + content: '\f1d9'; +} +.bi-bucket::before { + content: '\f1da'; +} +.bi-bug-fill::before { + content: '\f1db'; +} +.bi-bug::before { + content: '\f1dc'; +} +.bi-building::before { + content: '\f1dd'; +} +.bi-bullseye::before { + content: '\f1de'; +} +.bi-calculator-fill::before { + content: '\f1df'; +} +.bi-calculator::before { + content: '\f1e0'; +} +.bi-calendar-check-fill::before { + content: '\f1e1'; +} +.bi-calendar-check::before { + content: '\f1e2'; +} +.bi-calendar-date-fill::before { + content: '\f1e3'; +} +.bi-calendar-date::before { + content: '\f1e4'; +} +.bi-calendar-day-fill::before { + content: '\f1e5'; +} +.bi-calendar-day::before { + content: '\f1e6'; +} +.bi-calendar-event-fill::before { + content: '\f1e7'; +} +.bi-calendar-event::before { + content: '\f1e8'; +} +.bi-calendar-fill::before { + content: '\f1e9'; +} +.bi-calendar-minus-fill::before { + content: '\f1ea'; +} +.bi-calendar-minus::before { + content: '\f1eb'; +} +.bi-calendar-month-fill::before { + content: '\f1ec'; +} +.bi-calendar-month::before { + content: '\f1ed'; +} +.bi-calendar-plus-fill::before { + content: '\f1ee'; +} +.bi-calendar-plus::before { + content: '\f1ef'; +} +.bi-calendar-range-fill::before { + content: '\f1f0'; +} +.bi-calendar-range::before { + content: '\f1f1'; +} +.bi-calendar-week-fill::before { + content: '\f1f2'; +} +.bi-calendar-week::before { + content: '\f1f3'; +} +.bi-calendar-x-fill::before { + content: '\f1f4'; +} +.bi-calendar-x::before { + content: '\f1f5'; +} +.bi-calendar::before { + content: '\f1f6'; +} +.bi-calendar2-check-fill::before { + content: '\f1f7'; +} +.bi-calendar2-check::before { + content: '\f1f8'; +} +.bi-calendar2-date-fill::before { + content: '\f1f9'; +} +.bi-calendar2-date::before { + content: '\f1fa'; +} +.bi-calendar2-day-fill::before { + content: '\f1fb'; +} +.bi-calendar2-day::before { + content: '\f1fc'; +} +.bi-calendar2-event-fill::before { + content: '\f1fd'; +} +.bi-calendar2-event::before { + content: '\f1fe'; +} +.bi-calendar2-fill::before { + content: '\f1ff'; +} +.bi-calendar2-minus-fill::before { + content: '\f200'; +} +.bi-calendar2-minus::before { + content: '\f201'; +} +.bi-calendar2-month-fill::before { + content: '\f202'; +} +.bi-calendar2-month::before { + content: '\f203'; +} +.bi-calendar2-plus-fill::before { + content: '\f204'; +} +.bi-calendar2-plus::before { + content: '\f205'; +} +.bi-calendar2-range-fill::before { + content: '\f206'; +} +.bi-calendar2-range::before { + content: '\f207'; +} +.bi-calendar2-week-fill::before { + content: '\f208'; +} +.bi-calendar2-week::before { + content: '\f209'; +} +.bi-calendar2-x-fill::before { + content: '\f20a'; +} +.bi-calendar2-x::before { + content: '\f20b'; +} +.bi-calendar2::before { + content: '\f20c'; +} +.bi-calendar3-event-fill::before { + content: '\f20d'; +} +.bi-calendar3-event::before { + content: '\f20e'; +} +.bi-calendar3-fill::before { + content: '\f20f'; +} +.bi-calendar3-range-fill::before { + content: '\f210'; +} +.bi-calendar3-range::before { + content: '\f211'; +} +.bi-calendar3-week-fill::before { + content: '\f212'; +} +.bi-calendar3-week::before { + content: '\f213'; +} +.bi-calendar3::before { + content: '\f214'; +} +.bi-calendar4-event::before { + content: '\f215'; +} +.bi-calendar4-range::before { + content: '\f216'; +} +.bi-calendar4-week::before { + content: '\f217'; +} +.bi-calendar4::before { + content: '\f218'; +} +.bi-camera-fill::before { + content: '\f219'; +} +.bi-camera-reels-fill::before { + content: '\f21a'; +} +.bi-camera-reels::before { + content: '\f21b'; +} +.bi-camera-video-fill::before { + content: '\f21c'; +} +.bi-camera-video-off-fill::before { + content: '\f21d'; +} +.bi-camera-video-off::before { + content: '\f21e'; +} +.bi-camera-video::before { + content: '\f21f'; +} +.bi-camera::before { + content: '\f220'; +} +.bi-camera2::before { + content: '\f221'; +} +.bi-capslock-fill::before { + content: '\f222'; +} +.bi-capslock::before { + content: '\f223'; +} +.bi-card-checklist::before { + content: '\f224'; +} +.bi-card-heading::before { + content: '\f225'; +} +.bi-card-image::before { + content: '\f226'; +} +.bi-card-list::before { + content: '\f227'; +} +.bi-card-text::before { + content: '\f228'; +} +.bi-caret-down-fill::before { + content: '\f229'; +} +.bi-caret-down-square-fill::before { + content: '\f22a'; +} +.bi-caret-down-square::before { + content: '\f22b'; +} +.bi-caret-down::before { + content: '\f22c'; +} +.bi-caret-left-fill::before { + content: '\f22d'; +} +.bi-caret-left-square-fill::before { + content: '\f22e'; +} +.bi-caret-left-square::before { + content: '\f22f'; +} +.bi-caret-left::before { + content: '\f230'; +} +.bi-caret-right-fill::before { + content: '\f231'; +} +.bi-caret-right-square-fill::before { + content: '\f232'; +} +.bi-caret-right-square::before { + content: '\f233'; +} +.bi-caret-right::before { + content: '\f234'; +} +.bi-caret-up-fill::before { + content: '\f235'; +} +.bi-caret-up-square-fill::before { + content: '\f236'; +} +.bi-caret-up-square::before { + content: '\f237'; +} +.bi-caret-up::before { + content: '\f238'; +} +.bi-cart-check-fill::before { + content: '\f239'; +} +.bi-cart-check::before { + content: '\f23a'; +} +.bi-cart-dash-fill::before { + content: '\f23b'; +} +.bi-cart-dash::before { + content: '\f23c'; +} +.bi-cart-fill::before { + content: '\f23d'; +} +.bi-cart-plus-fill::before { + content: '\f23e'; +} +.bi-cart-plus::before { + content: '\f23f'; +} +.bi-cart-x-fill::before { + content: '\f240'; +} +.bi-cart-x::before { + content: '\f241'; +} +.bi-cart::before { + content: '\f242'; +} +.bi-cart2::before { + content: '\f243'; +} +.bi-cart3::before { + content: '\f244'; +} +.bi-cart4::before { + content: '\f245'; +} +.bi-cash-stack::before { + content: '\f246'; +} +.bi-cash::before { + content: '\f247'; +} +.bi-cast::before { + content: '\f248'; +} +.bi-chat-dots-fill::before { + content: '\f249'; +} +.bi-chat-dots::before { + content: '\f24a'; +} +.bi-chat-fill::before { + content: '\f24b'; +} +.bi-chat-left-dots-fill::before { + content: '\f24c'; +} +.bi-chat-left-dots::before { + content: '\f24d'; +} +.bi-chat-left-fill::before { + content: '\f24e'; +} +.bi-chat-left-quote-fill::before { + content: '\f24f'; +} +.bi-chat-left-quote::before { + content: '\f250'; +} +.bi-chat-left-text-fill::before { + content: '\f251'; +} +.bi-chat-left-text::before { + content: '\f252'; +} +.bi-chat-left::before { + content: '\f253'; +} +.bi-chat-quote-fill::before { + content: '\f254'; +} +.bi-chat-quote::before { + content: '\f255'; +} +.bi-chat-right-dots-fill::before { + content: '\f256'; +} +.bi-chat-right-dots::before { + content: '\f257'; +} +.bi-chat-right-fill::before { + content: '\f258'; +} +.bi-chat-right-quote-fill::before { + content: '\f259'; +} +.bi-chat-right-quote::before { + content: '\f25a'; +} +.bi-chat-right-text-fill::before { + content: '\f25b'; +} +.bi-chat-right-text::before { + content: '\f25c'; +} +.bi-chat-right::before { + content: '\f25d'; +} +.bi-chat-square-dots-fill::before { + content: '\f25e'; +} +.bi-chat-square-dots::before { + content: '\f25f'; +} +.bi-chat-square-fill::before { + content: '\f260'; +} +.bi-chat-square-quote-fill::before { + content: '\f261'; +} +.bi-chat-square-quote::before { + content: '\f262'; +} +.bi-chat-square-text-fill::before { + content: '\f263'; +} +.bi-chat-square-text::before { + content: '\f264'; +} +.bi-chat-square::before { + content: '\f265'; +} +.bi-chat-text-fill::before { + content: '\f266'; +} +.bi-chat-text::before { + content: '\f267'; +} +.bi-chat::before { + content: '\f268'; +} +.bi-check-all::before { + content: '\f269'; +} +.bi-check-circle-fill::before { + content: '\f26a'; +} +.bi-check-circle::before { + content: '\f26b'; +} +.bi-check-square-fill::before { + content: '\f26c'; +} +.bi-check-square::before { + content: '\f26d'; +} +.bi-check::before { + content: '\f26e'; +} +.bi-check2-all::before { + content: '\f26f'; +} +.bi-check2-circle::before { + content: '\f270'; +} +.bi-check2-square::before { + content: '\f271'; +} +.bi-check2::before { + content: '\f272'; +} +.bi-chevron-bar-contract::before { + content: '\f273'; +} +.bi-chevron-bar-down::before { + content: '\f274'; +} +.bi-chevron-bar-expand::before { + content: '\f275'; +} +.bi-chevron-bar-left::before { + content: '\f276'; +} +.bi-chevron-bar-right::before { + content: '\f277'; +} +.bi-chevron-bar-up::before { + content: '\f278'; +} +.bi-chevron-compact-down::before { + content: '\f279'; +} +.bi-chevron-compact-left::before { + content: '\f27a'; +} +.bi-chevron-compact-right::before { + content: '\f27b'; +} +.bi-chevron-compact-up::before { + content: '\f27c'; +} +.bi-chevron-contract::before { + content: '\f27d'; +} +.bi-chevron-double-down::before { + content: '\f27e'; +} +.bi-chevron-double-left::before { + content: '\f27f'; +} +.bi-chevron-double-right::before { + content: '\f280'; +} +.bi-chevron-double-up::before { + content: '\f281'; +} +.bi-chevron-down::before { + content: '\f282'; +} +.bi-chevron-expand::before { + content: '\f283'; +} +.bi-chevron-left::before { + content: '\f284'; +} +.bi-chevron-right::before { + content: '\f285'; +} +.bi-chevron-up::before { + content: '\f286'; +} +.bi-circle-fill::before { + content: '\f287'; +} +.bi-circle-half::before { + content: '\f288'; +} +.bi-circle-square::before { + content: '\f289'; +} +.bi-circle::before { + content: '\f28a'; +} +.bi-clipboard-check::before { + content: '\f28b'; +} +.bi-clipboard-data::before { + content: '\f28c'; +} +.bi-clipboard-minus::before { + content: '\f28d'; +} +.bi-clipboard-plus::before { + content: '\f28e'; +} +.bi-clipboard-x::before { + content: '\f28f'; +} +.bi-clipboard::before { + content: '\f290'; +} +.bi-clock-fill::before { + content: '\f291'; +} +.bi-clock-history::before { + content: '\f292'; +} +.bi-clock::before { + content: '\f293'; +} +.bi-cloud-arrow-down-fill::before { + content: '\f294'; +} +.bi-cloud-arrow-down::before { + content: '\f295'; +} +.bi-cloud-arrow-up-fill::before { + content: '\f296'; +} +.bi-cloud-arrow-up::before { + content: '\f297'; +} +.bi-cloud-check-fill::before { + content: '\f298'; +} +.bi-cloud-check::before { + content: '\f299'; +} +.bi-cloud-download-fill::before { + content: '\f29a'; +} +.bi-cloud-download::before { + content: '\f29b'; +} +.bi-cloud-drizzle-fill::before { + content: '\f29c'; +} +.bi-cloud-drizzle::before { + content: '\f29d'; +} +.bi-cloud-fill::before { + content: '\f29e'; +} +.bi-cloud-fog-fill::before { + content: '\f29f'; +} +.bi-cloud-fog::before { + content: '\f2a0'; +} +.bi-cloud-fog2-fill::before { + content: '\f2a1'; +} +.bi-cloud-fog2::before { + content: '\f2a2'; +} +.bi-cloud-hail-fill::before { + content: '\f2a3'; +} +.bi-cloud-hail::before { + content: '\f2a4'; +} +.bi-cloud-haze-fill::before { + content: '\f2a6'; +} +.bi-cloud-haze::before { + content: '\f2a7'; +} +.bi-cloud-haze2-fill::before { + content: '\f2a8'; +} +.bi-cloud-lightning-fill::before { + content: '\f2a9'; +} +.bi-cloud-lightning-rain-fill::before { + content: '\f2aa'; +} +.bi-cloud-lightning-rain::before { + content: '\f2ab'; +} +.bi-cloud-lightning::before { + content: '\f2ac'; +} +.bi-cloud-minus-fill::before { + content: '\f2ad'; +} +.bi-cloud-minus::before { + content: '\f2ae'; +} +.bi-cloud-moon-fill::before { + content: '\f2af'; +} +.bi-cloud-moon::before { + content: '\f2b0'; +} +.bi-cloud-plus-fill::before { + content: '\f2b1'; +} +.bi-cloud-plus::before { + content: '\f2b2'; +} +.bi-cloud-rain-fill::before { + content: '\f2b3'; +} +.bi-cloud-rain-heavy-fill::before { + content: '\f2b4'; +} +.bi-cloud-rain-heavy::before { + content: '\f2b5'; +} +.bi-cloud-rain::before { + content: '\f2b6'; +} +.bi-cloud-slash-fill::before { + content: '\f2b7'; +} +.bi-cloud-slash::before { + content: '\f2b8'; +} +.bi-cloud-sleet-fill::before { + content: '\f2b9'; +} +.bi-cloud-sleet::before { + content: '\f2ba'; +} +.bi-cloud-snow-fill::before { + content: '\f2bb'; +} +.bi-cloud-snow::before { + content: '\f2bc'; +} +.bi-cloud-sun-fill::before { + content: '\f2bd'; +} +.bi-cloud-sun::before { + content: '\f2be'; +} +.bi-cloud-upload-fill::before { + content: '\f2bf'; +} +.bi-cloud-upload::before { + content: '\f2c0'; +} +.bi-cloud::before { + content: '\f2c1'; +} +.bi-clouds-fill::before { + content: '\f2c2'; +} +.bi-clouds::before { + content: '\f2c3'; +} +.bi-cloudy-fill::before { + content: '\f2c4'; +} +.bi-cloudy::before { + content: '\f2c5'; +} +.bi-code-slash::before { + content: '\f2c6'; +} +.bi-code-square::before { + content: '\f2c7'; +} +.bi-code::before { + content: '\f2c8'; +} +.bi-collection-fill::before { + content: '\f2c9'; +} +.bi-collection-play-fill::before { + content: '\f2ca'; +} +.bi-collection-play::before { + content: '\f2cb'; +} +.bi-collection::before { + content: '\f2cc'; +} +.bi-columns-gap::before { + content: '\f2cd'; +} +.bi-columns::before { + content: '\f2ce'; +} +.bi-command::before { + content: '\f2cf'; +} +.bi-compass-fill::before { + content: '\f2d0'; +} +.bi-compass::before { + content: '\f2d1'; +} +.bi-cone-striped::before { + content: '\f2d2'; +} +.bi-cone::before { + content: '\f2d3'; +} +.bi-controller::before { + content: '\f2d4'; +} +.bi-cpu-fill::before { + content: '\f2d5'; +} +.bi-cpu::before { + content: '\f2d6'; +} +.bi-credit-card-2-back-fill::before { + content: '\f2d7'; +} +.bi-credit-card-2-back::before { + content: '\f2d8'; +} +.bi-credit-card-2-front-fill::before { + content: '\f2d9'; +} +.bi-credit-card-2-front::before { + content: '\f2da'; +} +.bi-credit-card-fill::before { + content: '\f2db'; +} +.bi-credit-card::before { + content: '\f2dc'; +} +.bi-crop::before { + content: '\f2dd'; +} +.bi-cup-fill::before { + content: '\f2de'; +} +.bi-cup-straw::before { + content: '\f2df'; +} +.bi-cup::before { + content: '\f2e0'; +} +.bi-cursor-fill::before { + content: '\f2e1'; +} +.bi-cursor-text::before { + content: '\f2e2'; +} +.bi-cursor::before { + content: '\f2e3'; +} +.bi-dash-circle-dotted::before { + content: '\f2e4'; +} +.bi-dash-circle-fill::before { + content: '\f2e5'; +} +.bi-dash-circle::before { + content: '\f2e6'; +} +.bi-dash-square-dotted::before { + content: '\f2e7'; +} +.bi-dash-square-fill::before { + content: '\f2e8'; +} +.bi-dash-square::before { + content: '\f2e9'; +} +.bi-dash::before { + content: '\f2ea'; +} +.bi-diagram-2-fill::before { + content: '\f2eb'; +} +.bi-diagram-2::before { + content: '\f2ec'; +} +.bi-diagram-3-fill::before { + content: '\f2ed'; +} +.bi-diagram-3::before { + content: '\f2ee'; +} +.bi-diamond-fill::before { + content: '\f2ef'; +} +.bi-diamond-half::before { + content: '\f2f0'; +} +.bi-diamond::before { + content: '\f2f1'; +} +.bi-dice-1-fill::before { + content: '\f2f2'; +} +.bi-dice-1::before { + content: '\f2f3'; +} +.bi-dice-2-fill::before { + content: '\f2f4'; +} +.bi-dice-2::before { + content: '\f2f5'; +} +.bi-dice-3-fill::before { + content: '\f2f6'; +} +.bi-dice-3::before { + content: '\f2f7'; +} +.bi-dice-4-fill::before { + content: '\f2f8'; +} +.bi-dice-4::before { + content: '\f2f9'; +} +.bi-dice-5-fill::before { + content: '\f2fa'; +} +.bi-dice-5::before { + content: '\f2fb'; +} +.bi-dice-6-fill::before { + content: '\f2fc'; +} +.bi-dice-6::before { + content: '\f2fd'; +} +.bi-disc-fill::before { + content: '\f2fe'; +} +.bi-disc::before { + content: '\f2ff'; +} +.bi-discord::before { + content: '\f300'; +} +.bi-display-fill::before { + content: '\f301'; +} +.bi-display::before { + content: '\f302'; +} +.bi-distribute-horizontal::before { + content: '\f303'; +} +.bi-distribute-vertical::before { + content: '\f304'; +} +.bi-door-closed-fill::before { + content: '\f305'; +} +.bi-door-closed::before { + content: '\f306'; +} +.bi-door-open-fill::before { + content: '\f307'; +} +.bi-door-open::before { + content: '\f308'; +} +.bi-dot::before { + content: '\f309'; +} +.bi-download::before { + content: '\f30a'; +} +.bi-droplet-fill::before { + content: '\f30b'; +} +.bi-droplet-half::before { + content: '\f30c'; +} +.bi-droplet::before { + content: '\f30d'; +} +.bi-earbuds::before { + content: '\f30e'; +} +.bi-easel-fill::before { + content: '\f30f'; +} +.bi-easel::before { + content: '\f310'; +} +.bi-egg-fill::before { + content: '\f311'; +} +.bi-egg-fried::before { + content: '\f312'; +} +.bi-egg::before { + content: '\f313'; +} +.bi-eject-fill::before { + content: '\f314'; +} +.bi-eject::before { + content: '\f315'; +} +.bi-emoji-angry-fill::before { + content: '\f316'; +} +.bi-emoji-angry::before { + content: '\f317'; +} +.bi-emoji-dizzy-fill::before { + content: '\f318'; +} +.bi-emoji-dizzy::before { + content: '\f319'; +} +.bi-emoji-expressionless-fill::before { + content: '\f31a'; +} +.bi-emoji-expressionless::before { + content: '\f31b'; +} +.bi-emoji-frown-fill::before { + content: '\f31c'; +} +.bi-emoji-frown::before { + content: '\f31d'; +} +.bi-emoji-heart-eyes-fill::before { + content: '\f31e'; +} +.bi-emoji-heart-eyes::before { + content: '\f31f'; +} +.bi-emoji-laughing-fill::before { + content: '\f320'; +} +.bi-emoji-laughing::before { + content: '\f321'; +} +.bi-emoji-neutral-fill::before { + content: '\f322'; +} +.bi-emoji-neutral::before { + content: '\f323'; +} +.bi-emoji-smile-fill::before { + content: '\f324'; +} +.bi-emoji-smile-upside-down-fill::before { + content: '\f325'; +} +.bi-emoji-smile-upside-down::before { + content: '\f326'; +} +.bi-emoji-smile::before { + content: '\f327'; +} +.bi-emoji-sunglasses-fill::before { + content: '\f328'; +} +.bi-emoji-sunglasses::before { + content: '\f329'; +} +.bi-emoji-wink-fill::before { + content: '\f32a'; +} +.bi-emoji-wink::before { + content: '\f32b'; +} +.bi-envelope-fill::before { + content: '\f32c'; +} +.bi-envelope-open-fill::before { + content: '\f32d'; +} +.bi-envelope-open::before { + content: '\f32e'; +} +.bi-envelope::before { + content: '\f32f'; +} +.bi-eraser-fill::before { + content: '\f330'; +} +.bi-eraser::before { + content: '\f331'; +} +.bi-exclamation-circle-fill::before { + content: '\f332'; +} +.bi-exclamation-circle::before { + content: '\f333'; +} +.bi-exclamation-diamond-fill::before { + content: '\f334'; +} +.bi-exclamation-diamond::before { + content: '\f335'; +} +.bi-exclamation-octagon-fill::before { + content: '\f336'; +} +.bi-exclamation-octagon::before { + content: '\f337'; +} +.bi-exclamation-square-fill::before { + content: '\f338'; +} +.bi-exclamation-square::before { + content: '\f339'; +} +.bi-exclamation-triangle-fill::before { + content: '\f33a'; +} +.bi-exclamation-triangle::before { + content: '\f33b'; +} +.bi-exclamation::before { + content: '\f33c'; +} +.bi-exclude::before { + content: '\f33d'; +} +.bi-eye-fill::before { + content: '\f33e'; +} +.bi-eye-slash-fill::before { + content: '\f33f'; +} +.bi-eye-slash::before { + content: '\f340'; +} +.bi-eye::before { + content: '\f341'; +} +.bi-eyedropper::before { + content: '\f342'; +} +.bi-eyeglasses::before { + content: '\f343'; +} +.bi-facebook::before { + content: '\f344'; +} +.bi-file-arrow-down-fill::before { + content: '\f345'; +} +.bi-file-arrow-down::before { + content: '\f346'; +} +.bi-file-arrow-up-fill::before { + content: '\f347'; +} +.bi-file-arrow-up::before { + content: '\f348'; +} +.bi-file-bar-graph-fill::before { + content: '\f349'; +} +.bi-file-bar-graph::before { + content: '\f34a'; +} +.bi-file-binary-fill::before { + content: '\f34b'; +} +.bi-file-binary::before { + content: '\f34c'; +} +.bi-file-break-fill::before { + content: '\f34d'; +} +.bi-file-break::before { + content: '\f34e'; +} +.bi-file-check-fill::before { + content: '\f34f'; +} +.bi-file-check::before { + content: '\f350'; +} +.bi-file-code-fill::before { + content: '\f351'; +} +.bi-file-code::before { + content: '\f352'; +} +.bi-file-diff-fill::before { + content: '\f353'; +} +.bi-file-diff::before { + content: '\f354'; +} +.bi-file-earmark-arrow-down-fill::before { + content: '\f355'; +} +.bi-file-earmark-arrow-down::before { + content: '\f356'; +} +.bi-file-earmark-arrow-up-fill::before { + content: '\f357'; +} +.bi-file-earmark-arrow-up::before { + content: '\f358'; +} +.bi-file-earmark-bar-graph-fill::before { + content: '\f359'; +} +.bi-file-earmark-bar-graph::before { + content: '\f35a'; +} +.bi-file-earmark-binary-fill::before { + content: '\f35b'; +} +.bi-file-earmark-binary::before { + content: '\f35c'; +} +.bi-file-earmark-break-fill::before { + content: '\f35d'; +} +.bi-file-earmark-break::before { + content: '\f35e'; +} +.bi-file-earmark-check-fill::before { + content: '\f35f'; +} +.bi-file-earmark-check::before { + content: '\f360'; +} +.bi-file-earmark-code-fill::before { + content: '\f361'; +} +.bi-file-earmark-code::before { + content: '\f362'; +} +.bi-file-earmark-diff-fill::before { + content: '\f363'; +} +.bi-file-earmark-diff::before { + content: '\f364'; +} +.bi-file-earmark-easel-fill::before { + content: '\f365'; +} +.bi-file-earmark-easel::before { + content: '\f366'; +} +.bi-file-earmark-excel-fill::before { + content: '\f367'; +} +.bi-file-earmark-excel::before { + content: '\f368'; +} +.bi-file-earmark-fill::before { + content: '\f369'; +} +.bi-file-earmark-font-fill::before { + content: '\f36a'; +} +.bi-file-earmark-font::before { + content: '\f36b'; +} +.bi-file-earmark-image-fill::before { + content: '\f36c'; +} +.bi-file-earmark-image::before { + content: '\f36d'; +} +.bi-file-earmark-lock-fill::before { + content: '\f36e'; +} +.bi-file-earmark-lock::before { + content: '\f36f'; +} +.bi-file-earmark-lock2-fill::before { + content: '\f370'; +} +.bi-file-earmark-lock2::before { + content: '\f371'; +} +.bi-file-earmark-medical-fill::before { + content: '\f372'; +} +.bi-file-earmark-medical::before { + content: '\f373'; +} +.bi-file-earmark-minus-fill::before { + content: '\f374'; +} +.bi-file-earmark-minus::before { + content: '\f375'; +} +.bi-file-earmark-music-fill::before { + content: '\f376'; +} +.bi-file-earmark-music::before { + content: '\f377'; +} +.bi-file-earmark-person-fill::before { + content: '\f378'; +} +.bi-file-earmark-person::before { + content: '\f379'; +} +.bi-file-earmark-play-fill::before { + content: '\f37a'; +} +.bi-file-earmark-play::before { + content: '\f37b'; +} +.bi-file-earmark-plus-fill::before { + content: '\f37c'; +} +.bi-file-earmark-plus::before { + content: '\f37d'; +} +.bi-file-earmark-post-fill::before { + content: '\f37e'; +} +.bi-file-earmark-post::before { + content: '\f37f'; +} +.bi-file-earmark-ppt-fill::before { + content: '\f380'; +} +.bi-file-earmark-ppt::before { + content: '\f381'; +} +.bi-file-earmark-richtext-fill::before { + content: '\f382'; +} +.bi-file-earmark-richtext::before { + content: '\f383'; +} +.bi-file-earmark-ruled-fill::before { + content: '\f384'; +} +.bi-file-earmark-ruled::before { + content: '\f385'; +} +.bi-file-earmark-slides-fill::before { + content: '\f386'; +} +.bi-file-earmark-slides::before { + content: '\f387'; +} +.bi-file-earmark-spreadsheet-fill::before { + content: '\f388'; +} +.bi-file-earmark-spreadsheet::before { + content: '\f389'; +} +.bi-file-earmark-text-fill::before { + content: '\f38a'; +} +.bi-file-earmark-text::before { + content: '\f38b'; +} +.bi-file-earmark-word-fill::before { + content: '\f38c'; +} +.bi-file-earmark-word::before { + content: '\f38d'; +} +.bi-file-earmark-x-fill::before { + content: '\f38e'; +} +.bi-file-earmark-x::before { + content: '\f38f'; +} +.bi-file-earmark-zip-fill::before { + content: '\f390'; +} +.bi-file-earmark-zip::before { + content: '\f391'; +} +.bi-file-earmark::before { + content: '\f392'; +} +.bi-file-easel-fill::before { + content: '\f393'; +} +.bi-file-easel::before { + content: '\f394'; +} +.bi-file-excel-fill::before { + content: '\f395'; +} +.bi-file-excel::before { + content: '\f396'; +} +.bi-file-fill::before { + content: '\f397'; +} +.bi-file-font-fill::before { + content: '\f398'; +} +.bi-file-font::before { + content: '\f399'; +} +.bi-file-image-fill::before { + content: '\f39a'; +} +.bi-file-image::before { + content: '\f39b'; +} +.bi-file-lock-fill::before { + content: '\f39c'; +} +.bi-file-lock::before { + content: '\f39d'; +} +.bi-file-lock2-fill::before { + content: '\f39e'; +} +.bi-file-lock2::before { + content: '\f39f'; +} +.bi-file-medical-fill::before { + content: '\f3a0'; +} +.bi-file-medical::before { + content: '\f3a1'; +} +.bi-file-minus-fill::before { + content: '\f3a2'; +} +.bi-file-minus::before { + content: '\f3a3'; +} +.bi-file-music-fill::before { + content: '\f3a4'; +} +.bi-file-music::before { + content: '\f3a5'; +} +.bi-file-person-fill::before { + content: '\f3a6'; +} +.bi-file-person::before { + content: '\f3a7'; +} +.bi-file-play-fill::before { + content: '\f3a8'; +} +.bi-file-play::before { + content: '\f3a9'; +} +.bi-file-plus-fill::before { + content: '\f3aa'; +} +.bi-file-plus::before { + content: '\f3ab'; +} +.bi-file-post-fill::before { + content: '\f3ac'; +} +.bi-file-post::before { + content: '\f3ad'; +} +.bi-file-ppt-fill::before { + content: '\f3ae'; +} +.bi-file-ppt::before { + content: '\f3af'; +} +.bi-file-richtext-fill::before { + content: '\f3b0'; +} +.bi-file-richtext::before { + content: '\f3b1'; +} +.bi-file-ruled-fill::before { + content: '\f3b2'; +} +.bi-file-ruled::before { + content: '\f3b3'; +} +.bi-file-slides-fill::before { + content: '\f3b4'; +} +.bi-file-slides::before { + content: '\f3b5'; +} +.bi-file-spreadsheet-fill::before { + content: '\f3b6'; +} +.bi-file-spreadsheet::before { + content: '\f3b7'; +} +.bi-file-text-fill::before { + content: '\f3b8'; +} +.bi-file-text::before { + content: '\f3b9'; +} +.bi-file-word-fill::before { + content: '\f3ba'; +} +.bi-file-word::before { + content: '\f3bb'; +} +.bi-file-x-fill::before { + content: '\f3bc'; +} +.bi-file-x::before { + content: '\f3bd'; +} +.bi-file-zip-fill::before { + content: '\f3be'; +} +.bi-file-zip::before { + content: '\f3bf'; +} +.bi-file::before { + content: '\f3c0'; +} +.bi-files-alt::before { + content: '\f3c1'; +} +.bi-files::before { + content: '\f3c2'; +} +.bi-film::before { + content: '\f3c3'; +} +.bi-filter-circle-fill::before { + content: '\f3c4'; +} +.bi-filter-circle::before { + content: '\f3c5'; +} +.bi-filter-left::before { + content: '\f3c6'; +} +.bi-filter-right::before { + content: '\f3c7'; +} +.bi-filter-square-fill::before { + content: '\f3c8'; +} +.bi-filter-square::before { + content: '\f3c9'; +} +.bi-filter::before { + content: '\f3ca'; +} +.bi-flag-fill::before { + content: '\f3cb'; +} +.bi-flag::before { + content: '\f3cc'; +} +.bi-flower1::before { + content: '\f3cd'; +} +.bi-flower2::before { + content: '\f3ce'; +} +.bi-flower3::before { + content: '\f3cf'; +} +.bi-folder-check::before { + content: '\f3d0'; +} +.bi-folder-fill::before { + content: '\f3d1'; +} +.bi-folder-minus::before { + content: '\f3d2'; +} +.bi-folder-plus::before { + content: '\f3d3'; +} +.bi-folder-symlink-fill::before { + content: '\f3d4'; +} +.bi-folder-symlink::before { + content: '\f3d5'; +} +.bi-folder-x::before { + content: '\f3d6'; +} +.bi-folder::before { + content: '\f3d7'; +} +.bi-folder2-open::before { + content: '\f3d8'; +} +.bi-folder2::before { + content: '\f3d9'; +} +.bi-fonts::before { + content: '\f3da'; +} +.bi-forward-fill::before { + content: '\f3db'; +} +.bi-forward::before { + content: '\f3dc'; +} +.bi-front::before { + content: '\f3dd'; +} +.bi-fullscreen-exit::before { + content: '\f3de'; +} +.bi-fullscreen::before { + content: '\f3df'; +} +.bi-funnel-fill::before { + content: '\f3e0'; +} +.bi-funnel::before { + content: '\f3e1'; +} +.bi-gear-fill::before { + content: '\f3e2'; +} +.bi-gear-wide-connected::before { + content: '\f3e3'; +} +.bi-gear-wide::before { + content: '\f3e4'; +} +.bi-gear::before { + content: '\f3e5'; +} +.bi-gem::before { + content: '\f3e6'; +} +.bi-geo-alt-fill::before { + content: '\f3e7'; +} +.bi-geo-alt::before { + content: '\f3e8'; +} +.bi-geo-fill::before { + content: '\f3e9'; +} +.bi-geo::before { + content: '\f3ea'; +} +.bi-gift-fill::before { + content: '\f3eb'; +} +.bi-gift::before { + content: '\f3ec'; +} +.bi-github::before { + content: '\f3ed'; +} +.bi-globe::before { + content: '\f3ee'; +} +.bi-globe2::before { + content: '\f3ef'; +} +.bi-google::before { + content: '\f3f0'; +} +.bi-graph-down::before { + content: '\f3f1'; +} +.bi-graph-up::before { + content: '\f3f2'; +} +.bi-grid-1x2-fill::before { + content: '\f3f3'; +} +.bi-grid-1x2::before { + content: '\f3f4'; +} +.bi-grid-3x2-gap-fill::before { + content: '\f3f5'; +} +.bi-grid-3x2-gap::before { + content: '\f3f6'; +} +.bi-grid-3x2::before { + content: '\f3f7'; +} +.bi-grid-3x3-gap-fill::before { + content: '\f3f8'; +} +.bi-grid-3x3-gap::before { + content: '\f3f9'; +} +.bi-grid-3x3::before { + content: '\f3fa'; +} +.bi-grid-fill::before { + content: '\f3fb'; +} +.bi-grid::before { + content: '\f3fc'; +} +.bi-grip-horizontal::before { + content: '\f3fd'; +} +.bi-grip-vertical::before { + content: '\f3fe'; +} +.bi-hammer::before { + content: '\f3ff'; +} +.bi-hand-index-fill::before { + content: '\f400'; +} +.bi-hand-index-thumb-fill::before { + content: '\f401'; +} +.bi-hand-index-thumb::before { + content: '\f402'; +} +.bi-hand-index::before { + content: '\f403'; +} +.bi-hand-thumbs-down-fill::before { + content: '\f404'; +} +.bi-hand-thumbs-down::before { + content: '\f405'; +} +.bi-hand-thumbs-up-fill::before { + content: '\f406'; +} +.bi-hand-thumbs-up::before { + content: '\f407'; +} +.bi-handbag-fill::before { + content: '\f408'; +} +.bi-handbag::before { + content: '\f409'; +} +.bi-hash::before { + content: '\f40a'; +} +.bi-hdd-fill::before { + content: '\f40b'; +} +.bi-hdd-network-fill::before { + content: '\f40c'; +} +.bi-hdd-network::before { + content: '\f40d'; +} +.bi-hdd-rack-fill::before { + content: '\f40e'; +} +.bi-hdd-rack::before { + content: '\f40f'; +} +.bi-hdd-stack-fill::before { + content: '\f410'; +} +.bi-hdd-stack::before { + content: '\f411'; +} +.bi-hdd::before { + content: '\f412'; +} +.bi-headphones::before { + content: '\f413'; +} +.bi-headset::before { + content: '\f414'; +} +.bi-heart-fill::before { + content: '\f415'; +} +.bi-heart-half::before { + content: '\f416'; +} +.bi-heart::before { + content: '\f417'; +} +.bi-heptagon-fill::before { + content: '\f418'; +} +.bi-heptagon-half::before { + content: '\f419'; +} +.bi-heptagon::before { + content: '\f41a'; +} +.bi-hexagon-fill::before { + content: '\f41b'; +} +.bi-hexagon-half::before { + content: '\f41c'; +} +.bi-hexagon::before { + content: '\f41d'; +} +.bi-hourglass-bottom::before { + content: '\f41e'; +} +.bi-hourglass-split::before { + content: '\f41f'; +} +.bi-hourglass-top::before { + content: '\f420'; +} +.bi-hourglass::before { + content: '\f421'; +} +.bi-house-door-fill::before { + content: '\f422'; +} +.bi-house-door::before { + content: '\f423'; +} +.bi-house-fill::before { + content: '\f424'; +} +.bi-house::before { + content: '\f425'; +} +.bi-hr::before { + content: '\f426'; +} +.bi-hurricane::before { + content: '\f427'; +} +.bi-image-alt::before { + content: '\f428'; +} +.bi-image-fill::before { + content: '\f429'; +} +.bi-image::before { + content: '\f42a'; +} +.bi-images::before { + content: '\f42b'; +} +.bi-inbox-fill::before { + content: '\f42c'; +} +.bi-inbox::before { + content: '\f42d'; +} +.bi-inboxes-fill::before { + content: '\f42e'; +} +.bi-inboxes::before { + content: '\f42f'; +} +.bi-info-circle-fill::before { + content: '\f430'; +} +.bi-info-circle::before { + content: '\f431'; +} +.bi-info-square-fill::before { + content: '\f432'; +} +.bi-info-square::before { + content: '\f433'; +} +.bi-info::before { + content: '\f434'; +} +.bi-input-cursor-text::before { + content: '\f435'; +} +.bi-input-cursor::before { + content: '\f436'; +} +.bi-instagram::before { + content: '\f437'; +} +.bi-intersect::before { + content: '\f438'; +} +.bi-journal-album::before { + content: '\f439'; +} +.bi-journal-arrow-down::before { + content: '\f43a'; +} +.bi-journal-arrow-up::before { + content: '\f43b'; +} +.bi-journal-bookmark-fill::before { + content: '\f43c'; +} +.bi-journal-bookmark::before { + content: '\f43d'; +} +.bi-journal-check::before { + content: '\f43e'; +} +.bi-journal-code::before { + content: '\f43f'; +} +.bi-journal-medical::before { + content: '\f440'; +} +.bi-journal-minus::before { + content: '\f441'; +} +.bi-journal-plus::before { + content: '\f442'; +} +.bi-journal-richtext::before { + content: '\f443'; +} +.bi-journal-text::before { + content: '\f444'; +} +.bi-journal-x::before { + content: '\f445'; +} +.bi-journal::before { + content: '\f446'; +} +.bi-journals::before { + content: '\f447'; +} +.bi-joystick::before { + content: '\f448'; +} +.bi-justify-left::before { + content: '\f449'; +} +.bi-justify-right::before { + content: '\f44a'; +} +.bi-justify::before { + content: '\f44b'; +} +.bi-kanban-fill::before { + content: '\f44c'; +} +.bi-kanban::before { + content: '\f44d'; +} +.bi-key-fill::before { + content: '\f44e'; +} +.bi-key::before { + content: '\f44f'; +} +.bi-keyboard-fill::before { + content: '\f450'; +} +.bi-keyboard::before { + content: '\f451'; +} +.bi-ladder::before { + content: '\f452'; +} +.bi-lamp-fill::before { + content: '\f453'; +} +.bi-lamp::before { + content: '\f454'; +} +.bi-laptop-fill::before { + content: '\f455'; +} +.bi-laptop::before { + content: '\f456'; +} +.bi-layer-backward::before { + content: '\f457'; +} +.bi-layer-forward::before { + content: '\f458'; +} +.bi-layers-fill::before { + content: '\f459'; +} +.bi-layers-half::before { + content: '\f45a'; +} +.bi-layers::before { + content: '\f45b'; +} +.bi-layout-sidebar-inset-reverse::before { + content: '\f45c'; +} +.bi-layout-sidebar-inset::before { + content: '\f45d'; +} +.bi-layout-sidebar-reverse::before { + content: '\f45e'; +} +.bi-layout-sidebar::before { + content: '\f45f'; +} +.bi-layout-split::before { + content: '\f460'; +} +.bi-layout-text-sidebar-reverse::before { + content: '\f461'; +} +.bi-layout-text-sidebar::before { + content: '\f462'; +} +.bi-layout-text-window-reverse::before { + content: '\f463'; +} +.bi-layout-text-window::before { + content: '\f464'; +} +.bi-layout-three-columns::before { + content: '\f465'; +} +.bi-layout-wtf::before { + content: '\f466'; +} +.bi-life-preserver::before { + content: '\f467'; +} +.bi-lightbulb-fill::before { + content: '\f468'; +} +.bi-lightbulb-off-fill::before { + content: '\f469'; +} +.bi-lightbulb-off::before { + content: '\f46a'; +} +.bi-lightbulb::before { + content: '\f46b'; +} +.bi-lightning-charge-fill::before { + content: '\f46c'; +} +.bi-lightning-charge::before { + content: '\f46d'; +} +.bi-lightning-fill::before { + content: '\f46e'; +} +.bi-lightning::before { + content: '\f46f'; +} +.bi-link-45deg::before { + content: '\f470'; +} +.bi-link::before { + content: '\f471'; +} +.bi-linkedin::before { + content: '\f472'; +} +.bi-list-check::before { + content: '\f473'; +} +.bi-list-nested::before { + content: '\f474'; +} +.bi-list-ol::before { + content: '\f475'; +} +.bi-list-stars::before { + content: '\f476'; +} +.bi-list-task::before { + content: '\f477'; +} +.bi-list-ul::before { + content: '\f478'; +} +.bi-list::before { + content: '\f479'; +} +.bi-lock-fill::before { + content: '\f47a'; +} +.bi-lock::before { + content: '\f47b'; +} +.bi-mailbox::before { + content: '\f47c'; +} +.bi-mailbox2::before { + content: '\f47d'; +} +.bi-map-fill::before { + content: '\f47e'; +} +.bi-map::before { + content: '\f47f'; +} +.bi-markdown-fill::before { + content: '\f480'; +} +.bi-markdown::before { + content: '\f481'; +} +.bi-mask::before { + content: '\f482'; +} +.bi-megaphone-fill::before { + content: '\f483'; +} +.bi-megaphone::before { + content: '\f484'; +} +.bi-menu-app-fill::before { + content: '\f485'; +} +.bi-menu-app::before { + content: '\f486'; +} +.bi-menu-button-fill::before { + content: '\f487'; +} +.bi-menu-button-wide-fill::before { + content: '\f488'; +} +.bi-menu-button-wide::before { + content: '\f489'; +} +.bi-menu-button::before { + content: '\f48a'; +} +.bi-menu-down::before { + content: '\f48b'; +} +.bi-menu-up::before { + content: '\f48c'; +} +.bi-mic-fill::before { + content: '\f48d'; +} +.bi-mic-mute-fill::before { + content: '\f48e'; +} +.bi-mic-mute::before { + content: '\f48f'; +} +.bi-mic::before { + content: '\f490'; +} +.bi-minecart-loaded::before { + content: '\f491'; +} +.bi-minecart::before { + content: '\f492'; +} +.bi-moisture::before { + content: '\f493'; +} +.bi-moon-fill::before { + content: '\f494'; +} +.bi-moon-stars-fill::before { + content: '\f495'; +} +.bi-moon-stars::before { + content: '\f496'; +} +.bi-moon::before { + content: '\f497'; +} +.bi-mouse-fill::before { + content: '\f498'; +} +.bi-mouse::before { + content: '\f499'; +} +.bi-mouse2-fill::before { + content: '\f49a'; +} +.bi-mouse2::before { + content: '\f49b'; +} +.bi-mouse3-fill::before { + content: '\f49c'; +} +.bi-mouse3::before { + content: '\f49d'; +} +.bi-music-note-beamed::before { + content: '\f49e'; +} +.bi-music-note-list::before { + content: '\f49f'; +} +.bi-music-note::before { + content: '\f4a0'; +} +.bi-music-player-fill::before { + content: '\f4a1'; +} +.bi-music-player::before { + content: '\f4a2'; +} +.bi-newspaper::before { + content: '\f4a3'; +} +.bi-node-minus-fill::before { + content: '\f4a4'; +} +.bi-node-minus::before { + content: '\f4a5'; +} +.bi-node-plus-fill::before { + content: '\f4a6'; +} +.bi-node-plus::before { + content: '\f4a7'; +} +.bi-nut-fill::before { + content: '\f4a8'; +} +.bi-nut::before { + content: '\f4a9'; +} +.bi-octagon-fill::before { + content: '\f4aa'; +} +.bi-octagon-half::before { + content: '\f4ab'; +} +.bi-octagon::before { + content: '\f4ac'; +} +.bi-option::before { + content: '\f4ad'; +} +.bi-outlet::before { + content: '\f4ae'; +} +.bi-paint-bucket::before { + content: '\f4af'; +} +.bi-palette-fill::before { + content: '\f4b0'; +} +.bi-palette::before { + content: '\f4b1'; +} +.bi-palette2::before { + content: '\f4b2'; +} +.bi-paperclip::before { + content: '\f4b3'; +} +.bi-paragraph::before { + content: '\f4b4'; +} +.bi-patch-check-fill::before { + content: '\f4b5'; +} +.bi-patch-check::before { + content: '\f4b6'; +} +.bi-patch-exclamation-fill::before { + content: '\f4b7'; +} +.bi-patch-exclamation::before { + content: '\f4b8'; +} +.bi-patch-minus-fill::before { + content: '\f4b9'; +} +.bi-patch-minus::before { + content: '\f4ba'; +} +.bi-patch-plus-fill::before { + content: '\f4bb'; +} +.bi-patch-plus::before { + content: '\f4bc'; +} +.bi-patch-question-fill::before { + content: '\f4bd'; +} +.bi-patch-question::before { + content: '\f4be'; +} +.bi-pause-btn-fill::before { + content: '\f4bf'; +} +.bi-pause-btn::before { + content: '\f4c0'; +} +.bi-pause-circle-fill::before { + content: '\f4c1'; +} +.bi-pause-circle::before { + content: '\f4c2'; +} +.bi-pause-fill::before { + content: '\f4c3'; +} +.bi-pause::before { + content: '\f4c4'; +} +.bi-peace-fill::before { + content: '\f4c5'; +} +.bi-peace::before { + content: '\f4c6'; +} +.bi-pen-fill::before { + content: '\f4c7'; +} +.bi-pen::before { + content: '\f4c8'; +} +.bi-pencil-fill::before { + content: '\f4c9'; +} +.bi-pencil-square::before { + content: '\f4ca'; +} +.bi-pencil::before { + content: '\f4cb'; +} +.bi-pentagon-fill::before { + content: '\f4cc'; +} +.bi-pentagon-half::before { + content: '\f4cd'; +} +.bi-pentagon::before { + content: '\f4ce'; +} +.bi-people-fill::before { + content: '\f4cf'; +} +.bi-people::before { + content: '\f4d0'; +} +.bi-percent::before { + content: '\f4d1'; +} +.bi-person-badge-fill::before { + content: '\f4d2'; +} +.bi-person-badge::before { + content: '\f4d3'; +} +.bi-person-bounding-box::before { + content: '\f4d4'; +} +.bi-person-check-fill::before { + content: '\f4d5'; +} +.bi-person-check::before { + content: '\f4d6'; +} +.bi-person-circle::before { + content: '\f4d7'; +} +.bi-person-dash-fill::before { + content: '\f4d8'; +} +.bi-person-dash::before { + content: '\f4d9'; +} +.bi-person-fill::before { + content: '\f4da'; +} +.bi-person-lines-fill::before { + content: '\f4db'; +} +.bi-person-plus-fill::before { + content: '\f4dc'; +} +.bi-person-plus::before { + content: '\f4dd'; +} +.bi-person-square::before { + content: '\f4de'; +} +.bi-person-x-fill::before { + content: '\f4df'; +} +.bi-person-x::before { + content: '\f4e0'; +} +.bi-person::before { + content: '\f4e1'; +} +.bi-phone-fill::before { + content: '\f4e2'; +} +.bi-phone-landscape-fill::before { + content: '\f4e3'; +} +.bi-phone-landscape::before { + content: '\f4e4'; +} +.bi-phone-vibrate-fill::before { + content: '\f4e5'; +} +.bi-phone-vibrate::before { + content: '\f4e6'; +} +.bi-phone::before { + content: '\f4e7'; +} +.bi-pie-chart-fill::before { + content: '\f4e8'; +} +.bi-pie-chart::before { + content: '\f4e9'; +} +.bi-pin-angle-fill::before { + content: '\f4ea'; +} +.bi-pin-angle::before { + content: '\f4eb'; +} +.bi-pin-fill::before { + content: '\f4ec'; +} +.bi-pin::before { + content: '\f4ed'; +} +.bi-pip-fill::before { + content: '\f4ee'; +} +.bi-pip::before { + content: '\f4ef'; +} +.bi-play-btn-fill::before { + content: '\f4f0'; +} +.bi-play-btn::before { + content: '\f4f1'; +} +.bi-play-circle-fill::before { + content: '\f4f2'; +} +.bi-play-circle::before { + content: '\f4f3'; +} +.bi-play-fill::before { + content: '\f4f4'; +} +.bi-play::before { + content: '\f4f5'; +} +.bi-plug-fill::before { + content: '\f4f6'; +} +.bi-plug::before { + content: '\f4f7'; +} +.bi-plus-circle-dotted::before { + content: '\f4f8'; +} +.bi-plus-circle-fill::before { + content: '\f4f9'; +} +.bi-plus-circle::before { + content: '\f4fa'; +} +.bi-plus-square-dotted::before { + content: '\f4fb'; +} +.bi-plus-square-fill::before { + content: '\f4fc'; +} +.bi-plus-square::before { + content: '\f4fd'; +} +.bi-plus::before { + content: '\f4fe'; +} +.bi-power::before { + content: '\f4ff'; +} +.bi-printer-fill::before { + content: '\f500'; +} +.bi-printer::before { + content: '\f501'; +} +.bi-puzzle-fill::before { + content: '\f502'; +} +.bi-puzzle::before { + content: '\f503'; +} +.bi-question-circle-fill::before { + content: '\f504'; +} +.bi-question-circle::before { + content: '\f505'; +} +.bi-question-diamond-fill::before { + content: '\f506'; +} +.bi-question-diamond::before { + content: '\f507'; +} +.bi-question-octagon-fill::before { + content: '\f508'; +} +.bi-question-octagon::before { + content: '\f509'; +} +.bi-question-square-fill::before { + content: '\f50a'; +} +.bi-question-square::before { + content: '\f50b'; +} +.bi-question::before { + content: '\f50c'; +} +.bi-rainbow::before { + content: '\f50d'; +} +.bi-receipt-cutoff::before { + content: '\f50e'; +} +.bi-receipt::before { + content: '\f50f'; +} +.bi-reception-0::before { + content: '\f510'; +} +.bi-reception-1::before { + content: '\f511'; +} +.bi-reception-2::before { + content: '\f512'; +} +.bi-reception-3::before { + content: '\f513'; +} +.bi-reception-4::before { + content: '\f514'; +} +.bi-record-btn-fill::before { + content: '\f515'; +} +.bi-record-btn::before { + content: '\f516'; +} +.bi-record-circle-fill::before { + content: '\f517'; +} +.bi-record-circle::before { + content: '\f518'; +} +.bi-record-fill::before { + content: '\f519'; +} +.bi-record::before { + content: '\f51a'; +} +.bi-record2-fill::before { + content: '\f51b'; +} +.bi-record2::before { + content: '\f51c'; +} +.bi-reply-all-fill::before { + content: '\f51d'; +} +.bi-reply-all::before { + content: '\f51e'; +} +.bi-reply-fill::before { + content: '\f51f'; +} +.bi-reply::before { + content: '\f520'; +} +.bi-rss-fill::before { + content: '\f521'; +} +.bi-rss::before { + content: '\f522'; +} +.bi-rulers::before { + content: '\f523'; +} +.bi-save-fill::before { + content: '\f524'; +} +.bi-save::before { + content: '\f525'; +} +.bi-save2-fill::before { + content: '\f526'; +} +.bi-save2::before { + content: '\f527'; +} +.bi-scissors::before { + content: '\f528'; +} +.bi-screwdriver::before { + content: '\f529'; +} +.bi-search::before { + content: '\f52a'; +} +.bi-segmented-nav::before { + content: '\f52b'; +} +.bi-server::before { + content: '\f52c'; +} +.bi-share-fill::before { + content: '\f52d'; +} +.bi-share::before { + content: '\f52e'; +} +.bi-shield-check::before { + content: '\f52f'; +} +.bi-shield-exclamation::before { + content: '\f530'; +} +.bi-shield-fill-check::before { + content: '\f531'; +} +.bi-shield-fill-exclamation::before { + content: '\f532'; +} +.bi-shield-fill-minus::before { + content: '\f533'; +} +.bi-shield-fill-plus::before { + content: '\f534'; +} +.bi-shield-fill-x::before { + content: '\f535'; +} +.bi-shield-fill::before { + content: '\f536'; +} +.bi-shield-lock-fill::before { + content: '\f537'; +} +.bi-shield-lock::before { + content: '\f538'; +} +.bi-shield-minus::before { + content: '\f539'; +} +.bi-shield-plus::before { + content: '\f53a'; +} +.bi-shield-shaded::before { + content: '\f53b'; +} +.bi-shield-slash-fill::before { + content: '\f53c'; +} +.bi-shield-slash::before { + content: '\f53d'; +} +.bi-shield-x::before { + content: '\f53e'; +} +.bi-shield::before { + content: '\f53f'; +} +.bi-shift-fill::before { + content: '\f540'; +} +.bi-shift::before { + content: '\f541'; +} +.bi-shop-window::before { + content: '\f542'; +} +.bi-shop::before { + content: '\f543'; +} +.bi-shuffle::before { + content: '\f544'; +} +.bi-signpost-2-fill::before { + content: '\f545'; +} +.bi-signpost-2::before { + content: '\f546'; +} +.bi-signpost-fill::before { + content: '\f547'; +} +.bi-signpost-split-fill::before { + content: '\f548'; +} +.bi-signpost-split::before { + content: '\f549'; +} +.bi-signpost::before { + content: '\f54a'; +} +.bi-sim-fill::before { + content: '\f54b'; +} +.bi-sim::before { + content: '\f54c'; +} +.bi-skip-backward-btn-fill::before { + content: '\f54d'; +} +.bi-skip-backward-btn::before { + content: '\f54e'; +} +.bi-skip-backward-circle-fill::before { + content: '\f54f'; +} +.bi-skip-backward-circle::before { + content: '\f550'; +} +.bi-skip-backward-fill::before { + content: '\f551'; +} +.bi-skip-backward::before { + content: '\f552'; +} +.bi-skip-end-btn-fill::before { + content: '\f553'; +} +.bi-skip-end-btn::before { + content: '\f554'; +} +.bi-skip-end-circle-fill::before { + content: '\f555'; +} +.bi-skip-end-circle::before { + content: '\f556'; +} +.bi-skip-end-fill::before { + content: '\f557'; +} +.bi-skip-end::before { + content: '\f558'; +} +.bi-skip-forward-btn-fill::before { + content: '\f559'; +} +.bi-skip-forward-btn::before { + content: '\f55a'; +} +.bi-skip-forward-circle-fill::before { + content: '\f55b'; +} +.bi-skip-forward-circle::before { + content: '\f55c'; +} +.bi-skip-forward-fill::before { + content: '\f55d'; +} +.bi-skip-forward::before { + content: '\f55e'; +} +.bi-skip-start-btn-fill::before { + content: '\f55f'; +} +.bi-skip-start-btn::before { + content: '\f560'; +} +.bi-skip-start-circle-fill::before { + content: '\f561'; +} +.bi-skip-start-circle::before { + content: '\f562'; +} +.bi-skip-start-fill::before { + content: '\f563'; +} +.bi-skip-start::before { + content: '\f564'; +} +.bi-slack::before { + content: '\f565'; +} +.bi-slash-circle-fill::before { + content: '\f566'; +} +.bi-slash-circle::before { + content: '\f567'; +} +.bi-slash-square-fill::before { + content: '\f568'; +} +.bi-slash-square::before { + content: '\f569'; +} +.bi-slash::before { + content: '\f56a'; +} +.bi-sliders::before { + content: '\f56b'; +} +.bi-smartwatch::before { + content: '\f56c'; +} +.bi-snow::before { + content: '\f56d'; +} +.bi-snow2::before { + content: '\f56e'; +} +.bi-snow3::before { + content: '\f56f'; +} +.bi-sort-alpha-down-alt::before { + content: '\f570'; +} +.bi-sort-alpha-down::before { + content: '\f571'; +} +.bi-sort-alpha-up-alt::before { + content: '\f572'; +} +.bi-sort-alpha-up::before { + content: '\f573'; +} +.bi-sort-down-alt::before { + content: '\f574'; +} +.bi-sort-down::before { + content: '\f575'; +} +.bi-sort-numeric-down-alt::before { + content: '\f576'; +} +.bi-sort-numeric-down::before { + content: '\f577'; +} +.bi-sort-numeric-up-alt::before { + content: '\f578'; +} +.bi-sort-numeric-up::before { + content: '\f579'; +} +.bi-sort-up-alt::before { + content: '\f57a'; +} +.bi-sort-up::before { + content: '\f57b'; +} +.bi-soundwave::before { + content: '\f57c'; +} +.bi-speaker-fill::before { + content: '\f57d'; +} +.bi-speaker::before { + content: '\f57e'; +} +.bi-speedometer::before { + content: '\f57f'; +} +.bi-speedometer2::before { + content: '\f580'; +} +.bi-spellcheck::before { + content: '\f581'; +} +.bi-square-fill::before { + content: '\f582'; +} +.bi-square-half::before { + content: '\f583'; +} +.bi-square::before { + content: '\f584'; +} +.bi-stack::before { + content: '\f585'; +} +.bi-star-fill::before { + content: '\f586'; +} +.bi-star-half::before { + content: '\f587'; +} +.bi-star::before { + content: '\f588'; +} +.bi-stars::before { + content: '\f589'; +} +.bi-stickies-fill::before { + content: '\f58a'; +} +.bi-stickies::before { + content: '\f58b'; +} +.bi-sticky-fill::before { + content: '\f58c'; +} +.bi-sticky::before { + content: '\f58d'; +} +.bi-stop-btn-fill::before { + content: '\f58e'; +} +.bi-stop-btn::before { + content: '\f58f'; +} +.bi-stop-circle-fill::before { + content: '\f590'; +} +.bi-stop-circle::before { + content: '\f591'; +} +.bi-stop-fill::before { + content: '\f592'; +} +.bi-stop::before { + content: '\f593'; +} +.bi-stoplights-fill::before { + content: '\f594'; +} +.bi-stoplights::before { + content: '\f595'; +} +.bi-stopwatch-fill::before { + content: '\f596'; +} +.bi-stopwatch::before { + content: '\f597'; +} +.bi-subtract::before { + content: '\f598'; +} +.bi-suit-club-fill::before { + content: '\f599'; +} +.bi-suit-club::before { + content: '\f59a'; +} +.bi-suit-diamond-fill::before { + content: '\f59b'; +} +.bi-suit-diamond::before { + content: '\f59c'; +} +.bi-suit-heart-fill::before { + content: '\f59d'; +} +.bi-suit-heart::before { + content: '\f59e'; +} +.bi-suit-spade-fill::before { + content: '\f59f'; +} +.bi-suit-spade::before { + content: '\f5a0'; +} +.bi-sun-fill::before { + content: '\f5a1'; +} +.bi-sun::before { + content: '\f5a2'; +} +.bi-sunglasses::before { + content: '\f5a3'; +} +.bi-sunrise-fill::before { + content: '\f5a4'; +} +.bi-sunrise::before { + content: '\f5a5'; +} +.bi-sunset-fill::before { + content: '\f5a6'; +} +.bi-sunset::before { + content: '\f5a7'; +} +.bi-symmetry-horizontal::before { + content: '\f5a8'; +} +.bi-symmetry-vertical::before { + content: '\f5a9'; +} +.bi-table::before { + content: '\f5aa'; +} +.bi-tablet-fill::before { + content: '\f5ab'; +} +.bi-tablet-landscape-fill::before { + content: '\f5ac'; +} +.bi-tablet-landscape::before { + content: '\f5ad'; +} +.bi-tablet::before { + content: '\f5ae'; +} +.bi-tag-fill::before { + content: '\f5af'; +} +.bi-tag::before { + content: '\f5b0'; +} +.bi-tags-fill::before { + content: '\f5b1'; +} +.bi-tags::before { + content: '\f5b2'; +} +.bi-telegram::before { + content: '\f5b3'; +} +.bi-telephone-fill::before { + content: '\f5b4'; +} +.bi-telephone-forward-fill::before { + content: '\f5b5'; +} +.bi-telephone-forward::before { + content: '\f5b6'; +} +.bi-telephone-inbound-fill::before { + content: '\f5b7'; +} +.bi-telephone-inbound::before { + content: '\f5b8'; +} +.bi-telephone-minus-fill::before { + content: '\f5b9'; +} +.bi-telephone-minus::before { + content: '\f5ba'; +} +.bi-telephone-outbound-fill::before { + content: '\f5bb'; +} +.bi-telephone-outbound::before { + content: '\f5bc'; +} +.bi-telephone-plus-fill::before { + content: '\f5bd'; +} +.bi-telephone-plus::before { + content: '\f5be'; +} +.bi-telephone-x-fill::before { + content: '\f5bf'; +} +.bi-telephone-x::before { + content: '\f5c0'; +} +.bi-telephone::before { + content: '\f5c1'; +} +.bi-terminal-fill::before { + content: '\f5c2'; +} +.bi-terminal::before { + content: '\f5c3'; +} +.bi-text-center::before { + content: '\f5c4'; +} +.bi-text-indent-left::before { + content: '\f5c5'; +} +.bi-text-indent-right::before { + content: '\f5c6'; +} +.bi-text-left::before { + content: '\f5c7'; +} +.bi-text-paragraph::before { + content: '\f5c8'; +} +.bi-text-right::before { + content: '\f5c9'; +} +.bi-textarea-resize::before { + content: '\f5ca'; +} +.bi-textarea-t::before { + content: '\f5cb'; +} +.bi-textarea::before { + content: '\f5cc'; +} +.bi-thermometer-half::before { + content: '\f5cd'; +} +.bi-thermometer-high::before { + content: '\f5ce'; +} +.bi-thermometer-low::before { + content: '\f5cf'; +} +.bi-thermometer-snow::before { + content: '\f5d0'; +} +.bi-thermometer-sun::before { + content: '\f5d1'; +} +.bi-thermometer::before { + content: '\f5d2'; +} +.bi-three-dots-vertical::before { + content: '\f5d3'; +} +.bi-three-dots::before { + content: '\f5d4'; +} +.bi-toggle-off::before { + content: '\f5d5'; +} +.bi-toggle-on::before { + content: '\f5d6'; +} +.bi-toggle2-off::before { + content: '\f5d7'; +} +.bi-toggle2-on::before { + content: '\f5d8'; +} +.bi-toggles::before { + content: '\f5d9'; +} +.bi-toggles2::before { + content: '\f5da'; +} +.bi-tools::before { + content: '\f5db'; +} +.bi-tornado::before { + content: '\f5dc'; +} +.bi-trash-fill::before { + content: '\f5dd'; +} +.bi-trash::before { + content: '\f5de'; +} +.bi-trash2-fill::before { + content: '\f5df'; +} +.bi-trash2::before { + content: '\f5e0'; +} +.bi-tree-fill::before { + content: '\f5e1'; +} +.bi-tree::before { + content: '\f5e2'; +} +.bi-triangle-fill::before { + content: '\f5e3'; +} +.bi-triangle-half::before { + content: '\f5e4'; +} +.bi-triangle::before { + content: '\f5e5'; +} +.bi-trophy-fill::before { + content: '\f5e6'; +} +.bi-trophy::before { + content: '\f5e7'; +} +.bi-tropical-storm::before { + content: '\f5e8'; +} +.bi-truck-flatbed::before { + content: '\f5e9'; +} +.bi-truck::before { + content: '\f5ea'; +} +.bi-tsunami::before { + content: '\f5eb'; +} +.bi-tv-fill::before { + content: '\f5ec'; +} +.bi-tv::before { + content: '\f5ed'; +} +.bi-twitch::before { + content: '\f5ee'; +} +.bi-twitter::before { + content: '\f5ef'; +} +.bi-type-bold::before { + content: '\f5f0'; +} +.bi-type-h1::before { + content: '\f5f1'; +} +.bi-type-h2::before { + content: '\f5f2'; +} +.bi-type-h3::before { + content: '\f5f3'; +} +.bi-type-italic::before { + content: '\f5f4'; +} +.bi-type-strikethrough::before { + content: '\f5f5'; +} +.bi-type-underline::before { + content: '\f5f6'; +} +.bi-type::before { + content: '\f5f7'; +} +.bi-ui-checks-grid::before { + content: '\f5f8'; +} +.bi-ui-checks::before { + content: '\f5f9'; +} +.bi-ui-radios-grid::before { + content: '\f5fa'; +} +.bi-ui-radios::before { + content: '\f5fb'; +} +.bi-umbrella-fill::before { + content: '\f5fc'; +} +.bi-umbrella::before { + content: '\f5fd'; +} +.bi-union::before { + content: '\f5fe'; +} +.bi-unlock-fill::before { + content: '\f5ff'; +} +.bi-unlock::before { + content: '\f600'; +} +.bi-upc-scan::before { + content: '\f601'; +} +.bi-upc::before { + content: '\f602'; +} +.bi-upload::before { + content: '\f603'; +} +.bi-vector-pen::before { + content: '\f604'; +} +.bi-view-list::before { + content: '\f605'; +} +.bi-view-stacked::before { + content: '\f606'; +} +.bi-vinyl-fill::before { + content: '\f607'; +} +.bi-vinyl::before { + content: '\f608'; +} +.bi-voicemail::before { + content: '\f609'; +} +.bi-volume-down-fill::before { + content: '\f60a'; +} +.bi-volume-down::before { + content: '\f60b'; +} +.bi-volume-mute-fill::before { + content: '\f60c'; +} +.bi-volume-mute::before { + content: '\f60d'; +} +.bi-volume-off-fill::before { + content: '\f60e'; +} +.bi-volume-off::before { + content: '\f60f'; +} +.bi-volume-up-fill::before { + content: '\f610'; +} +.bi-volume-up::before { + content: '\f611'; +} +.bi-vr::before { + content: '\f612'; +} +.bi-wallet-fill::before { + content: '\f613'; +} +.bi-wallet::before { + content: '\f614'; +} +.bi-wallet2::before { + content: '\f615'; +} +.bi-watch::before { + content: '\f616'; +} +.bi-water::before { + content: '\f617'; +} +.bi-whatsapp::before { + content: '\f618'; +} +.bi-wifi-1::before { + content: '\f619'; +} +.bi-wifi-2::before { + content: '\f61a'; +} +.bi-wifi-off::before { + content: '\f61b'; +} +.bi-wifi::before { + content: '\f61c'; +} +.bi-wind::before { + content: '\f61d'; +} +.bi-window-dock::before { + content: '\f61e'; +} +.bi-window-sidebar::before { + content: '\f61f'; +} +.bi-window::before { + content: '\f620'; +} +.bi-wrench::before { + content: '\f621'; +} +.bi-x-circle-fill::before { + content: '\f622'; +} +.bi-x-circle::before { + content: '\f623'; +} +.bi-x-diamond-fill::before { + content: '\f624'; +} +.bi-x-diamond::before { + content: '\f625'; +} +.bi-x-octagon-fill::before { + content: '\f626'; +} +.bi-x-octagon::before { + content: '\f627'; +} +.bi-x-square-fill::before { + content: '\f628'; +} +.bi-x-square::before { + content: '\f629'; +} +.bi-x::before { + content: '\f62a'; +} +.bi-youtube::before { + content: '\f62b'; +} +.bi-zoom-in::before { + content: '\f62c'; +} +.bi-zoom-out::before { + content: '\f62d'; +} +.bi-bank::before { + content: '\f62e'; +} +.bi-bank2::before { + content: '\f62f'; +} +.bi-bell-slash-fill::before { + content: '\f630'; +} +.bi-bell-slash::before { + content: '\f631'; +} +.bi-cash-coin::before { + content: '\f632'; +} +.bi-check-lg::before { + content: '\f633'; +} +.bi-coin::before { + content: '\f634'; +} +.bi-currency-bitcoin::before { + content: '\f635'; +} +.bi-currency-dollar::before { + content: '\f636'; +} +.bi-currency-euro::before { + content: '\f637'; +} +.bi-currency-exchange::before { + content: '\f638'; +} +.bi-currency-pound::before { + content: '\f639'; +} +.bi-currency-yen::before { + content: '\f63a'; +} +.bi-dash-lg::before { + content: '\f63b'; +} +.bi-exclamation-lg::before { + content: '\f63c'; +} +.bi-file-earmark-pdf-fill::before { + content: '\f63d'; +} +.bi-file-earmark-pdf::before { + content: '\f63e'; +} +.bi-file-pdf-fill::before { + content: '\f63f'; +} +.bi-file-pdf::before { + content: '\f640'; +} +.bi-gender-ambiguous::before { + content: '\f641'; +} +.bi-gender-female::before { + content: '\f642'; +} +.bi-gender-male::before { + content: '\f643'; +} +.bi-gender-trans::before { + content: '\f644'; +} +.bi-headset-vr::before { + content: '\f645'; +} +.bi-info-lg::before { + content: '\f646'; +} +.bi-mastodon::before { + content: '\f647'; +} +.bi-messenger::before { + content: '\f648'; +} +.bi-piggy-bank-fill::before { + content: '\f649'; +} +.bi-piggy-bank::before { + content: '\f64a'; +} +.bi-pin-map-fill::before { + content: '\f64b'; +} +.bi-pin-map::before { + content: '\f64c'; +} +.bi-plus-lg::before { + content: '\f64d'; +} +.bi-question-lg::before { + content: '\f64e'; +} +.bi-recycle::before { + content: '\f64f'; +} +.bi-reddit::before { + content: '\f650'; +} +.bi-safe-fill::before { + content: '\f651'; +} +.bi-safe2-fill::before { + content: '\f652'; +} +.bi-safe2::before { + content: '\f653'; +} +.bi-sd-card-fill::before { + content: '\f654'; +} +.bi-sd-card::before { + content: '\f655'; +} +.bi-skype::before { + content: '\f656'; +} +.bi-slash-lg::before { + content: '\f657'; +} +.bi-translate::before { + content: '\f658'; +} +.bi-x-lg::before { + content: '\f659'; +} +.bi-safe::before { + content: '\f65a'; +} +.bi-apple::before { + content: '\f65b'; +} +.bi-microsoft::before { + content: '\f65d'; +} +.bi-windows::before { + content: '\f65e'; +} +.bi-behance::before { + content: '\f65c'; +} +.bi-dribbble::before { + content: '\f65f'; +} +.bi-line::before { + content: '\f660'; +} +.bi-medium::before { + content: '\f661'; +} +.bi-paypal::before { + content: '\f662'; +} +.bi-pinterest::before { + content: '\f663'; +} +.bi-signal::before { + content: '\f664'; +} +.bi-snapchat::before { + content: '\f665'; +} +.bi-spotify::before { + content: '\f666'; +} +.bi-stack-overflow::before { + content: '\f667'; +} +.bi-strava::before { + content: '\f668'; +} +.bi-wordpress::before { + content: '\f669'; +} +.bi-vimeo::before { + content: '\f66a'; +} +.bi-activity::before { + content: '\f66b'; +} +.bi-easel2-fill::before { + content: '\f66c'; +} +.bi-easel2::before { + content: '\f66d'; +} +.bi-easel3-fill::before { + content: '\f66e'; +} +.bi-easel3::before { + content: '\f66f'; +} +.bi-fan::before { + content: '\f670'; +} +.bi-fingerprint::before { + content: '\f671'; +} +.bi-graph-down-arrow::before { + content: '\f672'; +} +.bi-graph-up-arrow::before { + content: '\f673'; +} +.bi-hypnotize::before { + content: '\f674'; +} +.bi-magic::before { + content: '\f675'; +} +.bi-person-rolodex::before { + content: '\f676'; +} +.bi-person-video::before { + content: '\f677'; +} +.bi-person-video2::before { + content: '\f678'; +} +.bi-person-video3::before { + content: '\f679'; +} +.bi-person-workspace::before { + content: '\f67a'; +} +.bi-radioactive::before { + content: '\f67b'; +} +.bi-webcam-fill::before { + content: '\f67c'; +} +.bi-webcam::before { + content: '\f67d'; +} +.bi-yin-yang::before { + content: '\f67e'; +} +.bi-bandaid-fill::before { + content: '\f680'; +} +.bi-bandaid::before { + content: '\f681'; +} +.bi-bluetooth::before { + content: '\f682'; +} +.bi-body-text::before { + content: '\f683'; +} +.bi-boombox::before { + content: '\f684'; +} +.bi-boxes::before { + content: '\f685'; +} +.bi-dpad-fill::before { + content: '\f686'; +} +.bi-dpad::before { + content: '\f687'; +} +.bi-ear-fill::before { + content: '\f688'; +} +.bi-ear::before { + content: '\f689'; +} +.bi-envelope-check-fill::before { + content: '\f68b'; +} +.bi-envelope-check::before { + content: '\f68c'; +} +.bi-envelope-dash-fill::before { + content: '\f68e'; +} +.bi-envelope-dash::before { + content: '\f68f'; +} +.bi-envelope-exclamation-fill::before { + content: '\f691'; +} +.bi-envelope-exclamation::before { + content: '\f692'; +} +.bi-envelope-plus-fill::before { + content: '\f693'; +} +.bi-envelope-plus::before { + content: '\f694'; +} +.bi-envelope-slash-fill::before { + content: '\f696'; +} +.bi-envelope-slash::before { + content: '\f697'; +} +.bi-envelope-x-fill::before { + content: '\f699'; +} +.bi-envelope-x::before { + content: '\f69a'; +} +.bi-explicit-fill::before { + content: '\f69b'; +} +.bi-explicit::before { + content: '\f69c'; +} +.bi-git::before { + content: '\f69d'; +} +.bi-infinity::before { + content: '\f69e'; +} +.bi-list-columns-reverse::before { + content: '\f69f'; +} +.bi-list-columns::before { + content: '\f6a0'; +} +.bi-meta::before { + content: '\f6a1'; +} +.bi-nintendo-switch::before { + content: '\f6a4'; +} +.bi-pc-display-horizontal::before { + content: '\f6a5'; +} +.bi-pc-display::before { + content: '\f6a6'; +} +.bi-pc-horizontal::before { + content: '\f6a7'; +} +.bi-pc::before { + content: '\f6a8'; +} +.bi-playstation::before { + content: '\f6a9'; +} +.bi-plus-slash-minus::before { + content: '\f6aa'; +} +.bi-projector-fill::before { + content: '\f6ab'; +} +.bi-projector::before { + content: '\f6ac'; +} +.bi-qr-code-scan::before { + content: '\f6ad'; +} +.bi-qr-code::before { + content: '\f6ae'; +} +.bi-quora::before { + content: '\f6af'; +} +.bi-quote::before { + content: '\f6b0'; +} +.bi-robot::before { + content: '\f6b1'; +} +.bi-send-check-fill::before { + content: '\f6b2'; +} +.bi-send-check::before { + content: '\f6b3'; +} +.bi-send-dash-fill::before { + content: '\f6b4'; +} +.bi-send-dash::before { + content: '\f6b5'; +} +.bi-send-exclamation-fill::before { + content: '\f6b7'; +} +.bi-send-exclamation::before { + content: '\f6b8'; +} +.bi-send-fill::before { + content: '\f6b9'; +} +.bi-send-plus-fill::before { + content: '\f6ba'; +} +.bi-send-plus::before { + content: '\f6bb'; +} +.bi-send-slash-fill::before { + content: '\f6bc'; +} +.bi-send-slash::before { + content: '\f6bd'; +} +.bi-send-x-fill::before { + content: '\f6be'; +} +.bi-send-x::before { + content: '\f6bf'; +} +.bi-send::before { + content: '\f6c0'; +} +.bi-steam::before { + content: '\f6c1'; +} +.bi-terminal-dash::before { + content: '\f6c3'; +} +.bi-terminal-plus::before { + content: '\f6c4'; +} +.bi-terminal-split::before { + content: '\f6c5'; +} +.bi-ticket-detailed-fill::before { + content: '\f6c6'; +} +.bi-ticket-detailed::before { + content: '\f6c7'; +} +.bi-ticket-fill::before { + content: '\f6c8'; +} +.bi-ticket-perforated-fill::before { + content: '\f6c9'; +} +.bi-ticket-perforated::before { + content: '\f6ca'; +} +.bi-ticket::before { + content: '\f6cb'; +} +.bi-tiktok::before { + content: '\f6cc'; +} +.bi-window-dash::before { + content: '\f6cd'; +} +.bi-window-desktop::before { + content: '\f6ce'; +} +.bi-window-fullscreen::before { + content: '\f6cf'; +} +.bi-window-plus::before { + content: '\f6d0'; +} +.bi-window-split::before { + content: '\f6d1'; +} +.bi-window-stack::before { + content: '\f6d2'; +} +.bi-window-x::before { + content: '\f6d3'; +} +.bi-xbox::before { + content: '\f6d4'; +} +.bi-ethernet::before { + content: '\f6d5'; +} +.bi-hdmi-fill::before { + content: '\f6d6'; +} +.bi-hdmi::before { + content: '\f6d7'; +} +.bi-usb-c-fill::before { + content: '\f6d8'; +} +.bi-usb-c::before { + content: '\f6d9'; +} +.bi-usb-fill::before { + content: '\f6da'; +} +.bi-usb-plug-fill::before { + content: '\f6db'; +} +.bi-usb-plug::before { + content: '\f6dc'; +} +.bi-usb-symbol::before { + content: '\f6dd'; +} +.bi-usb::before { + content: '\f6de'; +} +.bi-boombox-fill::before { + content: '\f6df'; +} +.bi-displayport::before { + content: '\f6e1'; +} +.bi-gpu-card::before { + content: '\f6e2'; +} +.bi-memory::before { + content: '\f6e3'; +} +.bi-modem-fill::before { + content: '\f6e4'; +} +.bi-modem::before { + content: '\f6e5'; +} +.bi-motherboard-fill::before { + content: '\f6e6'; +} +.bi-motherboard::before { + content: '\f6e7'; +} +.bi-optical-audio-fill::before { + content: '\f6e8'; +} +.bi-optical-audio::before { + content: '\f6e9'; +} +.bi-pci-card::before { + content: '\f6ea'; +} +.bi-router-fill::before { + content: '\f6eb'; +} +.bi-router::before { + content: '\f6ec'; +} +.bi-thunderbolt-fill::before { + content: '\f6ef'; +} +.bi-thunderbolt::before { + content: '\f6f0'; +} +.bi-usb-drive-fill::before { + content: '\f6f1'; +} +.bi-usb-drive::before { + content: '\f6f2'; +} +.bi-usb-micro-fill::before { + content: '\f6f3'; +} +.bi-usb-micro::before { + content: '\f6f4'; +} +.bi-usb-mini-fill::before { + content: '\f6f5'; +} +.bi-usb-mini::before { + content: '\f6f6'; +} +.bi-cloud-haze2::before { + content: '\f6f7'; +} +.bi-device-hdd-fill::before { + content: '\f6f8'; +} +.bi-device-hdd::before { + content: '\f6f9'; +} +.bi-device-ssd-fill::before { + content: '\f6fa'; +} +.bi-device-ssd::before { + content: '\f6fb'; +} +.bi-displayport-fill::before { + content: '\f6fc'; +} +.bi-mortarboard-fill::before { + content: '\f6fd'; +} +.bi-mortarboard::before { + content: '\f6fe'; +} +.bi-terminal-x::before { + content: '\f6ff'; +} +.bi-arrow-through-heart-fill::before { + content: '\f700'; +} +.bi-arrow-through-heart::before { + content: '\f701'; +} +.bi-badge-sd-fill::before { + content: '\f702'; +} +.bi-badge-sd::before { + content: '\f703'; +} +.bi-bag-heart-fill::before { + content: '\f704'; +} +.bi-bag-heart::before { + content: '\f705'; +} +.bi-balloon-fill::before { + content: '\f706'; +} +.bi-balloon-heart-fill::before { + content: '\f707'; +} +.bi-balloon-heart::before { + content: '\f708'; +} +.bi-balloon::before { + content: '\f709'; +} +.bi-box2-fill::before { + content: '\f70a'; +} +.bi-box2-heart-fill::before { + content: '\f70b'; +} +.bi-box2-heart::before { + content: '\f70c'; +} +.bi-box2::before { + content: '\f70d'; +} +.bi-braces-asterisk::before { + content: '\f70e'; +} +.bi-calendar-heart-fill::before { + content: '\f70f'; +} +.bi-calendar-heart::before { + content: '\f710'; +} +.bi-calendar2-heart-fill::before { + content: '\f711'; +} +.bi-calendar2-heart::before { + content: '\f712'; +} +.bi-chat-heart-fill::before { + content: '\f713'; +} +.bi-chat-heart::before { + content: '\f714'; +} +.bi-chat-left-heart-fill::before { + content: '\f715'; +} +.bi-chat-left-heart::before { + content: '\f716'; +} +.bi-chat-right-heart-fill::before { + content: '\f717'; +} +.bi-chat-right-heart::before { + content: '\f718'; +} +.bi-chat-square-heart-fill::before { + content: '\f719'; +} +.bi-chat-square-heart::before { + content: '\f71a'; +} +.bi-clipboard-check-fill::before { + content: '\f71b'; +} +.bi-clipboard-data-fill::before { + content: '\f71c'; +} +.bi-clipboard-fill::before { + content: '\f71d'; +} +.bi-clipboard-heart-fill::before { + content: '\f71e'; +} +.bi-clipboard-heart::before { + content: '\f71f'; +} +.bi-clipboard-minus-fill::before { + content: '\f720'; +} +.bi-clipboard-plus-fill::before { + content: '\f721'; +} +.bi-clipboard-pulse::before { + content: '\f722'; +} +.bi-clipboard-x-fill::before { + content: '\f723'; +} +.bi-clipboard2-check-fill::before { + content: '\f724'; +} +.bi-clipboard2-check::before { + content: '\f725'; +} +.bi-clipboard2-data-fill::before { + content: '\f726'; +} +.bi-clipboard2-data::before { + content: '\f727'; +} +.bi-clipboard2-fill::before { + content: '\f728'; +} +.bi-clipboard2-heart-fill::before { + content: '\f729'; +} +.bi-clipboard2-heart::before { + content: '\f72a'; +} +.bi-clipboard2-minus-fill::before { + content: '\f72b'; +} +.bi-clipboard2-minus::before { + content: '\f72c'; +} +.bi-clipboard2-plus-fill::before { + content: '\f72d'; +} +.bi-clipboard2-plus::before { + content: '\f72e'; +} +.bi-clipboard2-pulse-fill::before { + content: '\f72f'; +} +.bi-clipboard2-pulse::before { + content: '\f730'; +} +.bi-clipboard2-x-fill::before { + content: '\f731'; +} +.bi-clipboard2-x::before { + content: '\f732'; +} +.bi-clipboard2::before { + content: '\f733'; +} +.bi-emoji-kiss-fill::before { + content: '\f734'; +} +.bi-emoji-kiss::before { + content: '\f735'; +} +.bi-envelope-heart-fill::before { + content: '\f736'; +} +.bi-envelope-heart::before { + content: '\f737'; +} +.bi-envelope-open-heart-fill::before { + content: '\f738'; +} +.bi-envelope-open-heart::before { + content: '\f739'; +} +.bi-envelope-paper-fill::before { + content: '\f73a'; +} +.bi-envelope-paper-heart-fill::before { + content: '\f73b'; +} +.bi-envelope-paper-heart::before { + content: '\f73c'; +} +.bi-envelope-paper::before { + content: '\f73d'; +} +.bi-filetype-aac::before { + content: '\f73e'; +} +.bi-filetype-ai::before { + content: '\f73f'; +} +.bi-filetype-bmp::before { + content: '\f740'; +} +.bi-filetype-cs::before { + content: '\f741'; +} +.bi-filetype-css::before { + content: '\f742'; +} +.bi-filetype-csv::before { + content: '\f743'; +} +.bi-filetype-doc::before { + content: '\f744'; +} +.bi-filetype-docx::before { + content: '\f745'; +} +.bi-filetype-exe::before { + content: '\f746'; +} +.bi-filetype-gif::before { + content: '\f747'; +} +.bi-filetype-heic::before { + content: '\f748'; +} +.bi-filetype-html::before { + content: '\f749'; +} +.bi-filetype-java::before { + content: '\f74a'; +} +.bi-filetype-jpg::before { + content: '\f74b'; +} +.bi-filetype-js::before { + content: '\f74c'; +} +.bi-filetype-jsx::before { + content: '\f74d'; +} +.bi-filetype-key::before { + content: '\f74e'; +} +.bi-filetype-m4p::before { + content: '\f74f'; +} +.bi-filetype-md::before { + content: '\f750'; +} +.bi-filetype-mdx::before { + content: '\f751'; +} +.bi-filetype-mov::before { + content: '\f752'; +} +.bi-filetype-mp3::before { + content: '\f753'; +} +.bi-filetype-mp4::before { + content: '\f754'; +} +.bi-filetype-otf::before { + content: '\f755'; +} +.bi-filetype-pdf::before { + content: '\f756'; +} +.bi-filetype-php::before { + content: '\f757'; +} +.bi-filetype-png::before { + content: '\f758'; +} +.bi-filetype-ppt::before { + content: '\f75a'; +} +.bi-filetype-psd::before { + content: '\f75b'; +} +.bi-filetype-py::before { + content: '\f75c'; +} +.bi-filetype-raw::before { + content: '\f75d'; +} +.bi-filetype-rb::before { + content: '\f75e'; +} +.bi-filetype-sass::before { + content: '\f75f'; +} +.bi-filetype-scss::before { + content: '\f760'; +} +.bi-filetype-sh::before { + content: '\f761'; +} +.bi-filetype-svg::before { + content: '\f762'; +} +.bi-filetype-tiff::before { + content: '\f763'; +} +.bi-filetype-tsx::before { + content: '\f764'; +} +.bi-filetype-ttf::before { + content: '\f765'; +} +.bi-filetype-txt::before { + content: '\f766'; +} +.bi-filetype-wav::before { + content: '\f767'; +} +.bi-filetype-woff::before { + content: '\f768'; +} +.bi-filetype-xls::before { + content: '\f76a'; +} +.bi-filetype-xml::before { + content: '\f76b'; +} +.bi-filetype-yml::before { + content: '\f76c'; +} +.bi-heart-arrow::before { + content: '\f76d'; +} +.bi-heart-pulse-fill::before { + content: '\f76e'; +} +.bi-heart-pulse::before { + content: '\f76f'; +} +.bi-heartbreak-fill::before { + content: '\f770'; +} +.bi-heartbreak::before { + content: '\f771'; +} +.bi-hearts::before { + content: '\f772'; +} +.bi-hospital-fill::before { + content: '\f773'; +} +.bi-hospital::before { + content: '\f774'; +} +.bi-house-heart-fill::before { + content: '\f775'; +} +.bi-house-heart::before { + content: '\f776'; +} +.bi-incognito::before { + content: '\f777'; +} +.bi-magnet-fill::before { + content: '\f778'; +} +.bi-magnet::before { + content: '\f779'; +} +.bi-person-heart::before { + content: '\f77a'; +} +.bi-person-hearts::before { + content: '\f77b'; +} +.bi-phone-flip::before { + content: '\f77c'; +} +.bi-plugin::before { + content: '\f77d'; +} +.bi-postage-fill::before { + content: '\f77e'; +} +.bi-postage-heart-fill::before { + content: '\f77f'; +} +.bi-postage-heart::before { + content: '\f780'; +} +.bi-postage::before { + content: '\f781'; +} +.bi-postcard-fill::before { + content: '\f782'; +} +.bi-postcard-heart-fill::before { + content: '\f783'; +} +.bi-postcard-heart::before { + content: '\f784'; +} +.bi-postcard::before { + content: '\f785'; +} +.bi-search-heart-fill::before { + content: '\f786'; +} +.bi-search-heart::before { + content: '\f787'; +} +.bi-sliders2-vertical::before { + content: '\f788'; +} +.bi-sliders2::before { + content: '\f789'; +} +.bi-trash3-fill::before { + content: '\f78a'; +} +.bi-trash3::before { + content: '\f78b'; +} +.bi-valentine::before { + content: '\f78c'; +} +.bi-valentine2::before { + content: '\f78d'; +} +.bi-wrench-adjustable-circle-fill::before { + content: '\f78e'; +} +.bi-wrench-adjustable-circle::before { + content: '\f78f'; +} +.bi-wrench-adjustable::before { + content: '\f790'; +} +.bi-filetype-json::before { + content: '\f791'; +} +.bi-filetype-pptx::before { + content: '\f792'; +} +.bi-filetype-xlsx::before { + content: '\f793'; +} +.bi-1-circle-fill::before { + content: '\f796'; +} +.bi-1-circle::before { + content: '\f797'; +} +.bi-1-square-fill::before { + content: '\f798'; +} +.bi-1-square::before { + content: '\f799'; +} +.bi-2-circle-fill::before { + content: '\f79c'; +} +.bi-2-circle::before { + content: '\f79d'; +} +.bi-2-square-fill::before { + content: '\f79e'; +} +.bi-2-square::before { + content: '\f79f'; +} +.bi-3-circle-fill::before { + content: '\f7a2'; +} +.bi-3-circle::before { + content: '\f7a3'; +} +.bi-3-square-fill::before { + content: '\f7a4'; +} +.bi-3-square::before { + content: '\f7a5'; +} +.bi-4-circle-fill::before { + content: '\f7a8'; +} +.bi-4-circle::before { + content: '\f7a9'; +} +.bi-4-square-fill::before { + content: '\f7aa'; +} +.bi-4-square::before { + content: '\f7ab'; +} +.bi-5-circle-fill::before { + content: '\f7ae'; +} +.bi-5-circle::before { + content: '\f7af'; +} +.bi-5-square-fill::before { + content: '\f7b0'; +} +.bi-5-square::before { + content: '\f7b1'; +} +.bi-6-circle-fill::before { + content: '\f7b4'; +} +.bi-6-circle::before { + content: '\f7b5'; +} +.bi-6-square-fill::before { + content: '\f7b6'; +} +.bi-6-square::before { + content: '\f7b7'; +} +.bi-7-circle-fill::before { + content: '\f7ba'; +} +.bi-7-circle::before { + content: '\f7bb'; +} +.bi-7-square-fill::before { + content: '\f7bc'; +} +.bi-7-square::before { + content: '\f7bd'; +} +.bi-8-circle-fill::before { + content: '\f7c0'; +} +.bi-8-circle::before { + content: '\f7c1'; +} +.bi-8-square-fill::before { + content: '\f7c2'; +} +.bi-8-square::before { + content: '\f7c3'; +} +.bi-9-circle-fill::before { + content: '\f7c6'; +} +.bi-9-circle::before { + content: '\f7c7'; +} +.bi-9-square-fill::before { + content: '\f7c8'; +} +.bi-9-square::before { + content: '\f7c9'; +} +.bi-airplane-engines-fill::before { + content: '\f7ca'; +} +.bi-airplane-engines::before { + content: '\f7cb'; +} +.bi-airplane-fill::before { + content: '\f7cc'; +} +.bi-airplane::before { + content: '\f7cd'; +} +.bi-alexa::before { + content: '\f7ce'; +} +.bi-alipay::before { + content: '\f7cf'; +} +.bi-android::before { + content: '\f7d0'; +} +.bi-android2::before { + content: '\f7d1'; +} +.bi-box-fill::before { + content: '\f7d2'; +} +.bi-box-seam-fill::before { + content: '\f7d3'; +} +.bi-browser-chrome::before { + content: '\f7d4'; +} +.bi-browser-edge::before { + content: '\f7d5'; +} +.bi-browser-firefox::before { + content: '\f7d6'; +} +.bi-browser-safari::before { + content: '\f7d7'; +} +.bi-c-circle-fill::before { + content: '\f7da'; +} +.bi-c-circle::before { + content: '\f7db'; +} +.bi-c-square-fill::before { + content: '\f7dc'; +} +.bi-c-square::before { + content: '\f7dd'; +} +.bi-capsule-pill::before { + content: '\f7de'; +} +.bi-capsule::before { + content: '\f7df'; +} +.bi-car-front-fill::before { + content: '\f7e0'; +} +.bi-car-front::before { + content: '\f7e1'; +} +.bi-cassette-fill::before { + content: '\f7e2'; +} +.bi-cassette::before { + content: '\f7e3'; +} +.bi-cc-circle-fill::before { + content: '\f7e6'; +} +.bi-cc-circle::before { + content: '\f7e7'; +} +.bi-cc-square-fill::before { + content: '\f7e8'; +} +.bi-cc-square::before { + content: '\f7e9'; +} +.bi-cup-hot-fill::before { + content: '\f7ea'; +} +.bi-cup-hot::before { + content: '\f7eb'; +} +.bi-currency-rupee::before { + content: '\f7ec'; +} +.bi-dropbox::before { + content: '\f7ed'; +} +.bi-escape::before { + content: '\f7ee'; +} +.bi-fast-forward-btn-fill::before { + content: '\f7ef'; +} +.bi-fast-forward-btn::before { + content: '\f7f0'; +} +.bi-fast-forward-circle-fill::before { + content: '\f7f1'; +} +.bi-fast-forward-circle::before { + content: '\f7f2'; +} +.bi-fast-forward-fill::before { + content: '\f7f3'; +} +.bi-fast-forward::before { + content: '\f7f4'; +} +.bi-filetype-sql::before { + content: '\f7f5'; +} +.bi-fire::before { + content: '\f7f6'; +} +.bi-google-play::before { + content: '\f7f7'; +} +.bi-h-circle-fill::before { + content: '\f7fa'; +} +.bi-h-circle::before { + content: '\f7fb'; +} +.bi-h-square-fill::before { + content: '\f7fc'; +} +.bi-h-square::before { + content: '\f7fd'; +} +.bi-indent::before { + content: '\f7fe'; +} +.bi-lungs-fill::before { + content: '\f7ff'; +} +.bi-lungs::before { + content: '\f800'; +} +.bi-microsoft-teams::before { + content: '\f801'; +} +.bi-p-circle-fill::before { + content: '\f804'; +} +.bi-p-circle::before { + content: '\f805'; +} +.bi-p-square-fill::before { + content: '\f806'; +} +.bi-p-square::before { + content: '\f807'; +} +.bi-pass-fill::before { + content: '\f808'; +} +.bi-pass::before { + content: '\f809'; +} +.bi-prescription::before { + content: '\f80a'; +} +.bi-prescription2::before { + content: '\f80b'; +} +.bi-r-circle-fill::before { + content: '\f80e'; +} +.bi-r-circle::before { + content: '\f80f'; +} +.bi-r-square-fill::before { + content: '\f810'; +} +.bi-r-square::before { + content: '\f811'; +} +.bi-repeat-1::before { + content: '\f812'; +} +.bi-repeat::before { + content: '\f813'; +} +.bi-rewind-btn-fill::before { + content: '\f814'; +} +.bi-rewind-btn::before { + content: '\f815'; +} +.bi-rewind-circle-fill::before { + content: '\f816'; +} +.bi-rewind-circle::before { + content: '\f817'; +} +.bi-rewind-fill::before { + content: '\f818'; +} +.bi-rewind::before { + content: '\f819'; +} +.bi-train-freight-front-fill::before { + content: '\f81a'; +} +.bi-train-freight-front::before { + content: '\f81b'; +} +.bi-train-front-fill::before { + content: '\f81c'; +} +.bi-train-front::before { + content: '\f81d'; +} +.bi-train-lightrail-front-fill::before { + content: '\f81e'; +} +.bi-train-lightrail-front::before { + content: '\f81f'; +} +.bi-truck-front-fill::before { + content: '\f820'; +} +.bi-truck-front::before { + content: '\f821'; +} +.bi-ubuntu::before { + content: '\f822'; +} +.bi-unindent::before { + content: '\f823'; +} +.bi-unity::before { + content: '\f824'; +} +.bi-universal-access-circle::before { + content: '\f825'; +} +.bi-universal-access::before { + content: '\f826'; +} +.bi-virus::before { + content: '\f827'; +} +.bi-virus2::before { + content: '\f828'; +} +.bi-wechat::before { + content: '\f829'; +} +.bi-yelp::before { + content: '\f82a'; +} +.bi-sign-stop-fill::before { + content: '\f82b'; +} +.bi-sign-stop-lights-fill::before { + content: '\f82c'; +} +.bi-sign-stop-lights::before { + content: '\f82d'; +} +.bi-sign-stop::before { + content: '\f82e'; +} +.bi-sign-turn-left-fill::before { + content: '\f82f'; +} +.bi-sign-turn-left::before { + content: '\f830'; +} +.bi-sign-turn-right-fill::before { + content: '\f831'; +} +.bi-sign-turn-right::before { + content: '\f832'; +} +.bi-sign-turn-slight-left-fill::before { + content: '\f833'; +} +.bi-sign-turn-slight-left::before { + content: '\f834'; +} +.bi-sign-turn-slight-right-fill::before { + content: '\f835'; +} +.bi-sign-turn-slight-right::before { + content: '\f836'; +} +.bi-sign-yield-fill::before { + content: '\f837'; +} +.bi-sign-yield::before { + content: '\f838'; +} +.bi-ev-station-fill::before { + content: '\f839'; +} +.bi-ev-station::before { + content: '\f83a'; +} +.bi-fuel-pump-diesel-fill::before { + content: '\f83b'; +} +.bi-fuel-pump-diesel::before { + content: '\f83c'; +} +.bi-fuel-pump-fill::before { + content: '\f83d'; +} +.bi-fuel-pump::before { + content: '\f83e'; +} +.bi-0-circle-fill::before { + content: '\f83f'; +} +.bi-0-circle::before { + content: '\f840'; +} +.bi-0-square-fill::before { + content: '\f841'; +} +.bi-0-square::before { + content: '\f842'; +} +.bi-rocket-fill::before { + content: '\f843'; +} +.bi-rocket-takeoff-fill::before { + content: '\f844'; +} +.bi-rocket-takeoff::before { + content: '\f845'; +} +.bi-rocket::before { + content: '\f846'; +} +.bi-stripe::before { + content: '\f847'; +} +.bi-subscript::before { + content: '\f848'; +} +.bi-superscript::before { + content: '\f849'; +} +.bi-trello::before { + content: '\f84a'; +} +.bi-envelope-at-fill::before { + content: '\f84b'; +} +.bi-envelope-at::before { + content: '\f84c'; +} +.bi-regex::before { + content: '\f84d'; +} +.bi-text-wrap::before { + content: '\f84e'; +} +.bi-sign-dead-end-fill::before { + content: '\f84f'; +} +.bi-sign-dead-end::before { + content: '\f850'; +} +.bi-sign-do-not-enter-fill::before { + content: '\f851'; +} +.bi-sign-do-not-enter::before { + content: '\f852'; +} +.bi-sign-intersection-fill::before { + content: '\f853'; +} +.bi-sign-intersection-side-fill::before { + content: '\f854'; +} +.bi-sign-intersection-side::before { + content: '\f855'; +} +.bi-sign-intersection-t-fill::before { + content: '\f856'; +} +.bi-sign-intersection-t::before { + content: '\f857'; +} +.bi-sign-intersection-y-fill::before { + content: '\f858'; +} +.bi-sign-intersection-y::before { + content: '\f859'; +} +.bi-sign-intersection::before { + content: '\f85a'; +} +.bi-sign-merge-left-fill::before { + content: '\f85b'; +} +.bi-sign-merge-left::before { + content: '\f85c'; +} +.bi-sign-merge-right-fill::before { + content: '\f85d'; +} +.bi-sign-merge-right::before { + content: '\f85e'; +} +.bi-sign-no-left-turn-fill::before { + content: '\f85f'; +} +.bi-sign-no-left-turn::before { + content: '\f860'; +} +.bi-sign-no-parking-fill::before { + content: '\f861'; +} +.bi-sign-no-parking::before { + content: '\f862'; +} +.bi-sign-no-right-turn-fill::before { + content: '\f863'; +} +.bi-sign-no-right-turn::before { + content: '\f864'; +} +.bi-sign-railroad-fill::before { + content: '\f865'; +} +.bi-sign-railroad::before { + content: '\f866'; +} +.bi-building-add::before { + content: '\f867'; +} +.bi-building-check::before { + content: '\f868'; +} +.bi-building-dash::before { + content: '\f869'; +} +.bi-building-down::before { + content: '\f86a'; +} +.bi-building-exclamation::before { + content: '\f86b'; +} +.bi-building-fill-add::before { + content: '\f86c'; +} +.bi-building-fill-check::before { + content: '\f86d'; +} +.bi-building-fill-dash::before { + content: '\f86e'; +} +.bi-building-fill-down::before { + content: '\f86f'; +} +.bi-building-fill-exclamation::before { + content: '\f870'; +} +.bi-building-fill-gear::before { + content: '\f871'; +} +.bi-building-fill-lock::before { + content: '\f872'; +} +.bi-building-fill-slash::before { + content: '\f873'; +} +.bi-building-fill-up::before { + content: '\f874'; +} +.bi-building-fill-x::before { + content: '\f875'; +} +.bi-building-fill::before { + content: '\f876'; +} +.bi-building-gear::before { + content: '\f877'; +} +.bi-building-lock::before { + content: '\f878'; +} +.bi-building-slash::before { + content: '\f879'; +} +.bi-building-up::before { + content: '\f87a'; +} +.bi-building-x::before { + content: '\f87b'; +} +.bi-buildings-fill::before { + content: '\f87c'; +} +.bi-buildings::before { + content: '\f87d'; +} +.bi-bus-front-fill::before { + content: '\f87e'; +} +.bi-bus-front::before { + content: '\f87f'; +} +.bi-ev-front-fill::before { + content: '\f880'; +} +.bi-ev-front::before { + content: '\f881'; +} +.bi-globe-americas::before { + content: '\f882'; +} +.bi-globe-asia-australia::before { + content: '\f883'; +} +.bi-globe-central-south-asia::before { + content: '\f884'; +} +.bi-globe-europe-africa::before { + content: '\f885'; +} +.bi-house-add-fill::before { + content: '\f886'; +} +.bi-house-add::before { + content: '\f887'; +} +.bi-house-check-fill::before { + content: '\f888'; +} +.bi-house-check::before { + content: '\f889'; +} +.bi-house-dash-fill::before { + content: '\f88a'; +} +.bi-house-dash::before { + content: '\f88b'; +} +.bi-house-down-fill::before { + content: '\f88c'; +} +.bi-house-down::before { + content: '\f88d'; +} +.bi-house-exclamation-fill::before { + content: '\f88e'; +} +.bi-house-exclamation::before { + content: '\f88f'; +} +.bi-house-gear-fill::before { + content: '\f890'; +} +.bi-house-gear::before { + content: '\f891'; +} +.bi-house-lock-fill::before { + content: '\f892'; +} +.bi-house-lock::before { + content: '\f893'; +} +.bi-house-slash-fill::before { + content: '\f894'; +} +.bi-house-slash::before { + content: '\f895'; +} +.bi-house-up-fill::before { + content: '\f896'; +} +.bi-house-up::before { + content: '\f897'; +} +.bi-house-x-fill::before { + content: '\f898'; +} +.bi-house-x::before { + content: '\f899'; +} +.bi-person-add::before { + content: '\f89a'; +} +.bi-person-down::before { + content: '\f89b'; +} +.bi-person-exclamation::before { + content: '\f89c'; +} +.bi-person-fill-add::before { + content: '\f89d'; +} +.bi-person-fill-check::before { + content: '\f89e'; +} +.bi-person-fill-dash::before { + content: '\f89f'; +} +.bi-person-fill-down::before { + content: '\f8a0'; +} +.bi-person-fill-exclamation::before { + content: '\f8a1'; +} +.bi-person-fill-gear::before { + content: '\f8a2'; +} +.bi-person-fill-lock::before { + content: '\f8a3'; +} +.bi-person-fill-slash::before { + content: '\f8a4'; +} +.bi-person-fill-up::before { + content: '\f8a5'; +} +.bi-person-fill-x::before { + content: '\f8a6'; +} +.bi-person-gear::before { + content: '\f8a7'; +} +.bi-person-lock::before { + content: '\f8a8'; +} +.bi-person-slash::before { + content: '\f8a9'; +} +.bi-person-up::before { + content: '\f8aa'; +} +.bi-scooter::before { + content: '\f8ab'; +} +.bi-taxi-front-fill::before { + content: '\f8ac'; +} +.bi-taxi-front::before { + content: '\f8ad'; +} +.bi-amd::before { + content: '\f8ae'; +} +.bi-database-add::before { + content: '\f8af'; +} +.bi-database-check::before { + content: '\f8b0'; +} +.bi-database-dash::before { + content: '\f8b1'; +} +.bi-database-down::before { + content: '\f8b2'; +} +.bi-database-exclamation::before { + content: '\f8b3'; +} +.bi-database-fill-add::before { + content: '\f8b4'; +} +.bi-database-fill-check::before { + content: '\f8b5'; +} +.bi-database-fill-dash::before { + content: '\f8b6'; +} +.bi-database-fill-down::before { + content: '\f8b7'; +} +.bi-database-fill-exclamation::before { + content: '\f8b8'; +} +.bi-database-fill-gear::before { + content: '\f8b9'; +} +.bi-database-fill-lock::before { + content: '\f8ba'; +} +.bi-database-fill-slash::before { + content: '\f8bb'; +} +.bi-database-fill-up::before { + content: '\f8bc'; +} +.bi-database-fill-x::before { + content: '\f8bd'; +} +.bi-database-fill::before { + content: '\f8be'; +} +.bi-database-gear::before { + content: '\f8bf'; +} +.bi-database-lock::before { + content: '\f8c0'; +} +.bi-database-slash::before { + content: '\f8c1'; +} +.bi-database-up::before { + content: '\f8c2'; +} +.bi-database-x::before { + content: '\f8c3'; +} +.bi-database::before { + content: '\f8c4'; +} +.bi-houses-fill::before { + content: '\f8c5'; +} +.bi-houses::before { + content: '\f8c6'; +} +.bi-nvidia::before { + content: '\f8c7'; +} +.bi-person-vcard-fill::before { + content: '\f8c8'; +} +.bi-person-vcard::before { + content: '\f8c9'; +} +.bi-sina-weibo::before { + content: '\f8ca'; +} +.bi-tencent-qq::before { + content: '\f8cb'; +} +.bi-wikipedia::before { + content: '\f8cc'; +} +.bi-alphabet-uppercase::before { + content: '\f2a5'; +} +.bi-alphabet::before { + content: '\f68a'; +} +.bi-amazon::before { + content: '\f68d'; +} +.bi-arrows-collapse-vertical::before { + content: '\f690'; +} +.bi-arrows-expand-vertical::before { + content: '\f695'; +} +.bi-arrows-vertical::before { + content: '\f698'; +} +.bi-arrows::before { + content: '\f6a2'; +} +.bi-ban-fill::before { + content: '\f6a3'; +} +.bi-ban::before { + content: '\f6b6'; +} +.bi-bing::before { + content: '\f6c2'; +} +.bi-cake::before { + content: '\f6e0'; +} +.bi-cake2::before { + content: '\f6ed'; +} +.bi-cookie::before { + content: '\f6ee'; +} +.bi-copy::before { + content: '\f759'; +} +.bi-crosshair::before { + content: '\f769'; +} +.bi-crosshair2::before { + content: '\f794'; +} +.bi-emoji-astonished-fill::before { + content: '\f795'; +} +.bi-emoji-astonished::before { + content: '\f79a'; +} +.bi-emoji-grimace-fill::before { + content: '\f79b'; +} +.bi-emoji-grimace::before { + content: '\f7a0'; +} +.bi-emoji-grin-fill::before { + content: '\f7a1'; +} +.bi-emoji-grin::before { + content: '\f7a6'; +} +.bi-emoji-surprise-fill::before { + content: '\f7a7'; +} +.bi-emoji-surprise::before { + content: '\f7ac'; +} +.bi-emoji-tear-fill::before { + content: '\f7ad'; +} +.bi-emoji-tear::before { + content: '\f7b2'; +} +.bi-envelope-arrow-down-fill::before { + content: '\f7b3'; +} +.bi-envelope-arrow-down::before { + content: '\f7b8'; +} +.bi-envelope-arrow-up-fill::before { + content: '\f7b9'; +} +.bi-envelope-arrow-up::before { + content: '\f7be'; +} +.bi-feather::before { + content: '\f7bf'; +} +.bi-feather2::before { + content: '\f7c4'; +} +.bi-floppy-fill::before { + content: '\f7c5'; +} +.bi-floppy::before { + content: '\f7d8'; +} +.bi-floppy2-fill::before { + content: '\f7d9'; +} +.bi-floppy2::before { + content: '\f7e4'; +} +.bi-gitlab::before { + content: '\f7e5'; +} +.bi-highlighter::before { + content: '\f7f8'; +} +.bi-marker-tip::before { + content: '\f802'; +} +.bi-nvme-fill::before { + content: '\f803'; +} +.bi-nvme::before { + content: '\f80c'; +} +.bi-opencollective::before { + content: '\f80d'; +} +.bi-pci-card-network::before { + content: '\f8cd'; +} +.bi-pci-card-sound::before { + content: '\f8ce'; +} +.bi-radar::before { + content: '\f8cf'; +} +.bi-send-arrow-down-fill::before { + content: '\f8d0'; +} +.bi-send-arrow-down::before { + content: '\f8d1'; +} +.bi-send-arrow-up-fill::before { + content: '\f8d2'; +} +.bi-send-arrow-up::before { + content: '\f8d3'; +} +.bi-sim-slash-fill::before { + content: '\f8d4'; +} +.bi-sim-slash::before { + content: '\f8d5'; +} +.bi-sourceforge::before { + content: '\f8d6'; +} +.bi-substack::before { + content: '\f8d7'; +} +.bi-threads-fill::before { + content: '\f8d8'; +} +.bi-threads::before { + content: '\f8d9'; +} +.bi-transparency::before { + content: '\f8da'; +} +.bi-twitter-x::before { + content: '\f8db'; +} +.bi-type-h4::before { + content: '\f8dc'; +} +.bi-type-h5::before { + content: '\f8dd'; +} +.bi-type-h6::before { + content: '\f8de'; +} +.bi-backpack-fill::before { + content: '\f8df'; +} +.bi-backpack::before { + content: '\f8e0'; +} +.bi-backpack2-fill::before { + content: '\f8e1'; +} +.bi-backpack2::before { + content: '\f8e2'; +} +.bi-backpack3-fill::before { + content: '\f8e3'; +} +.bi-backpack3::before { + content: '\f8e4'; +} +.bi-backpack4-fill::before { + content: '\f8e5'; +} +.bi-backpack4::before { + content: '\f8e6'; +} +.bi-brilliance::before { + content: '\f8e7'; +} +.bi-cake-fill::before { + content: '\f8e8'; +} +.bi-cake2-fill::before { + content: '\f8e9'; +} +.bi-duffle-fill::before { + content: '\f8ea'; +} +.bi-duffle::before { + content: '\f8eb'; +} +.bi-exposure::before { + content: '\f8ec'; +} +.bi-gender-neuter::before { + content: '\f8ed'; +} +.bi-highlights::before { + content: '\f8ee'; +} +.bi-luggage-fill::before { + content: '\f8ef'; +} +.bi-luggage::before { + content: '\f8f0'; +} +.bi-mailbox-flag::before { + content: '\f8f1'; +} +.bi-mailbox2-flag::before { + content: '\f8f2'; +} +.bi-noise-reduction::before { + content: '\f8f3'; +} +.bi-passport-fill::before { + content: '\f8f4'; +} +.bi-passport::before { + content: '\f8f5'; +} +.bi-person-arms-up::before { + content: '\f8f6'; +} +.bi-person-raised-hand::before { + content: '\f8f7'; +} +.bi-person-standing-dress::before { + content: '\f8f8'; +} +.bi-person-standing::before { + content: '\f8f9'; +} +.bi-person-walking::before { + content: '\f8fa'; +} +.bi-person-wheelchair::before { + content: '\f8fb'; +} +.bi-shadows::before { + content: '\f8fc'; +} +.bi-suitcase-fill::before { + content: '\f8fd'; +} +.bi-suitcase-lg-fill::before { + content: '\f8fe'; +} +.bi-suitcase-lg::before { + content: '\f8ff'; +} +.bi-suitcase::before { + content: '\f900'; +} +.bi-suitcase2-fill::before { + content: '\f901'; +} +.bi-suitcase2::before { + content: '\f902'; +} +.bi-vignette::before { + content: '\f903'; +} diff --git a/src/assets/fonts/bootstrap-icons.scss b/src/assets/fonts/bootstrap-icons.scss new file mode 100644 index 00000000..c98a764d --- /dev/null +++ b/src/assets/fonts/bootstrap-icons.scss @@ -0,0 +1,2095 @@ +/*! + * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/) + * Copyright 2019-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ + +$bootstrap-icons-font: 'bootstrap-icons' !default; +$bootstrap-icons-font-dir: './fonts' !default; +$bootstrap-icons-font-file: '#{$bootstrap-icons-font-dir}/#{$bootstrap-icons-font}' !default; +$bootstrap-icons-font-hash: '24e3eb84d0bcaf83d77f904c78ac1f47' !default; +$bootstrap-icons-font-src: + url('#{$bootstrap-icons-font-file}.woff2?#{$bootstrap-icons-font-hash}') + format('woff2'), + url('#{$bootstrap-icons-font-file}.woff?#{$bootstrap-icons-font-hash}') + format('woff') !default; + +@font-face { + font-display: block; + font-family: $bootstrap-icons-font; + src: $bootstrap-icons-font-src; +} + +.bi::before, +[class^='bi-']::before, +[class*=' bi-']::before { + display: inline-block; + font-family: $bootstrap-icons-font !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -0.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +$bootstrap-icons-map: ( + '123': '\f67f', + 'alarm-fill': '\f101', + 'alarm': '\f102', + 'align-bottom': '\f103', + 'align-center': '\f104', + 'align-end': '\f105', + 'align-middle': '\f106', + 'align-start': '\f107', + 'align-top': '\f108', + 'alt': '\f109', + 'app-indicator': '\f10a', + 'app': '\f10b', + 'archive-fill': '\f10c', + 'archive': '\f10d', + 'arrow-90deg-down': '\f10e', + 'arrow-90deg-left': '\f10f', + 'arrow-90deg-right': '\f110', + 'arrow-90deg-up': '\f111', + 'arrow-bar-down': '\f112', + 'arrow-bar-left': '\f113', + 'arrow-bar-right': '\f114', + 'arrow-bar-up': '\f115', + 'arrow-clockwise': '\f116', + 'arrow-counterclockwise': '\f117', + 'arrow-down-circle-fill': '\f118', + 'arrow-down-circle': '\f119', + 'arrow-down-left-circle-fill': '\f11a', + 'arrow-down-left-circle': '\f11b', + 'arrow-down-left-square-fill': '\f11c', + 'arrow-down-left-square': '\f11d', + 'arrow-down-left': '\f11e', + 'arrow-down-right-circle-fill': '\f11f', + 'arrow-down-right-circle': '\f120', + 'arrow-down-right-square-fill': '\f121', + 'arrow-down-right-square': '\f122', + 'arrow-down-right': '\f123', + 'arrow-down-short': '\f124', + 'arrow-down-square-fill': '\f125', + 'arrow-down-square': '\f126', + 'arrow-down-up': '\f127', + 'arrow-down': '\f128', + 'arrow-left-circle-fill': '\f129', + 'arrow-left-circle': '\f12a', + 'arrow-left-right': '\f12b', + 'arrow-left-short': '\f12c', + 'arrow-left-square-fill': '\f12d', + 'arrow-left-square': '\f12e', + 'arrow-left': '\f12f', + 'arrow-repeat': '\f130', + 'arrow-return-left': '\f131', + 'arrow-return-right': '\f132', + 'arrow-right-circle-fill': '\f133', + 'arrow-right-circle': '\f134', + 'arrow-right-short': '\f135', + 'arrow-right-square-fill': '\f136', + 'arrow-right-square': '\f137', + 'arrow-right': '\f138', + 'arrow-up-circle-fill': '\f139', + 'arrow-up-circle': '\f13a', + 'arrow-up-left-circle-fill': '\f13b', + 'arrow-up-left-circle': '\f13c', + 'arrow-up-left-square-fill': '\f13d', + 'arrow-up-left-square': '\f13e', + 'arrow-up-left': '\f13f', + 'arrow-up-right-circle-fill': '\f140', + 'arrow-up-right-circle': '\f141', + 'arrow-up-right-square-fill': '\f142', + 'arrow-up-right-square': '\f143', + 'arrow-up-right': '\f144', + 'arrow-up-short': '\f145', + 'arrow-up-square-fill': '\f146', + 'arrow-up-square': '\f147', + 'arrow-up': '\f148', + 'arrows-angle-contract': '\f149', + 'arrows-angle-expand': '\f14a', + 'arrows-collapse': '\f14b', + 'arrows-expand': '\f14c', + 'arrows-fullscreen': '\f14d', + 'arrows-move': '\f14e', + 'aspect-ratio-fill': '\f14f', + 'aspect-ratio': '\f150', + 'asterisk': '\f151', + 'at': '\f152', + 'award-fill': '\f153', + 'award': '\f154', + 'back': '\f155', + 'backspace-fill': '\f156', + 'backspace-reverse-fill': '\f157', + 'backspace-reverse': '\f158', + 'backspace': '\f159', + 'badge-3d-fill': '\f15a', + 'badge-3d': '\f15b', + 'badge-4k-fill': '\f15c', + 'badge-4k': '\f15d', + 'badge-8k-fill': '\f15e', + 'badge-8k': '\f15f', + 'badge-ad-fill': '\f160', + 'badge-ad': '\f161', + 'badge-ar-fill': '\f162', + 'badge-ar': '\f163', + 'badge-cc-fill': '\f164', + 'badge-cc': '\f165', + 'badge-hd-fill': '\f166', + 'badge-hd': '\f167', + 'badge-tm-fill': '\f168', + 'badge-tm': '\f169', + 'badge-vo-fill': '\f16a', + 'badge-vo': '\f16b', + 'badge-vr-fill': '\f16c', + 'badge-vr': '\f16d', + 'badge-wc-fill': '\f16e', + 'badge-wc': '\f16f', + 'bag-check-fill': '\f170', + 'bag-check': '\f171', + 'bag-dash-fill': '\f172', + 'bag-dash': '\f173', + 'bag-fill': '\f174', + 'bag-plus-fill': '\f175', + 'bag-plus': '\f176', + 'bag-x-fill': '\f177', + 'bag-x': '\f178', + 'bag': '\f179', + 'bar-chart-fill': '\f17a', + 'bar-chart-line-fill': '\f17b', + 'bar-chart-line': '\f17c', + 'bar-chart-steps': '\f17d', + 'bar-chart': '\f17e', + 'basket-fill': '\f17f', + 'basket': '\f180', + 'basket2-fill': '\f181', + 'basket2': '\f182', + 'basket3-fill': '\f183', + 'basket3': '\f184', + 'battery-charging': '\f185', + 'battery-full': '\f186', + 'battery-half': '\f187', + 'battery': '\f188', + 'bell-fill': '\f189', + 'bell': '\f18a', + 'bezier': '\f18b', + 'bezier2': '\f18c', + 'bicycle': '\f18d', + 'binoculars-fill': '\f18e', + 'binoculars': '\f18f', + 'blockquote-left': '\f190', + 'blockquote-right': '\f191', + 'book-fill': '\f192', + 'book-half': '\f193', + 'book': '\f194', + 'bookmark-check-fill': '\f195', + 'bookmark-check': '\f196', + 'bookmark-dash-fill': '\f197', + 'bookmark-dash': '\f198', + 'bookmark-fill': '\f199', + 'bookmark-heart-fill': '\f19a', + 'bookmark-heart': '\f19b', + 'bookmark-plus-fill': '\f19c', + 'bookmark-plus': '\f19d', + 'bookmark-star-fill': '\f19e', + 'bookmark-star': '\f19f', + 'bookmark-x-fill': '\f1a0', + 'bookmark-x': '\f1a1', + 'bookmark': '\f1a2', + 'bookmarks-fill': '\f1a3', + 'bookmarks': '\f1a4', + 'bookshelf': '\f1a5', + 'bootstrap-fill': '\f1a6', + 'bootstrap-reboot': '\f1a7', + 'bootstrap': '\f1a8', + 'border-all': '\f1a9', + 'border-bottom': '\f1aa', + 'border-center': '\f1ab', + 'border-inner': '\f1ac', + 'border-left': '\f1ad', + 'border-middle': '\f1ae', + 'border-outer': '\f1af', + 'border-right': '\f1b0', + 'border-style': '\f1b1', + 'border-top': '\f1b2', + 'border-width': '\f1b3', + 'border': '\f1b4', + 'bounding-box-circles': '\f1b5', + 'bounding-box': '\f1b6', + 'box-arrow-down-left': '\f1b7', + 'box-arrow-down-right': '\f1b8', + 'box-arrow-down': '\f1b9', + 'box-arrow-in-down-left': '\f1ba', + 'box-arrow-in-down-right': '\f1bb', + 'box-arrow-in-down': '\f1bc', + 'box-arrow-in-left': '\f1bd', + 'box-arrow-in-right': '\f1be', + 'box-arrow-in-up-left': '\f1bf', + 'box-arrow-in-up-right': '\f1c0', + 'box-arrow-in-up': '\f1c1', + 'box-arrow-left': '\f1c2', + 'box-arrow-right': '\f1c3', + 'box-arrow-up-left': '\f1c4', + 'box-arrow-up-right': '\f1c5', + 'box-arrow-up': '\f1c6', + 'box-seam': '\f1c7', + 'box': '\f1c8', + 'braces': '\f1c9', + 'bricks': '\f1ca', + 'briefcase-fill': '\f1cb', + 'briefcase': '\f1cc', + 'brightness-alt-high-fill': '\f1cd', + 'brightness-alt-high': '\f1ce', + 'brightness-alt-low-fill': '\f1cf', + 'brightness-alt-low': '\f1d0', + 'brightness-high-fill': '\f1d1', + 'brightness-high': '\f1d2', + 'brightness-low-fill': '\f1d3', + 'brightness-low': '\f1d4', + 'broadcast-pin': '\f1d5', + 'broadcast': '\f1d6', + 'brush-fill': '\f1d7', + 'brush': '\f1d8', + 'bucket-fill': '\f1d9', + 'bucket': '\f1da', + 'bug-fill': '\f1db', + 'bug': '\f1dc', + 'building': '\f1dd', + 'bullseye': '\f1de', + 'calculator-fill': '\f1df', + 'calculator': '\f1e0', + 'calendar-check-fill': '\f1e1', + 'calendar-check': '\f1e2', + 'calendar-date-fill': '\f1e3', + 'calendar-date': '\f1e4', + 'calendar-day-fill': '\f1e5', + 'calendar-day': '\f1e6', + 'calendar-event-fill': '\f1e7', + 'calendar-event': '\f1e8', + 'calendar-fill': '\f1e9', + 'calendar-minus-fill': '\f1ea', + 'calendar-minus': '\f1eb', + 'calendar-month-fill': '\f1ec', + 'calendar-month': '\f1ed', + 'calendar-plus-fill': '\f1ee', + 'calendar-plus': '\f1ef', + 'calendar-range-fill': '\f1f0', + 'calendar-range': '\f1f1', + 'calendar-week-fill': '\f1f2', + 'calendar-week': '\f1f3', + 'calendar-x-fill': '\f1f4', + 'calendar-x': '\f1f5', + 'calendar': '\f1f6', + 'calendar2-check-fill': '\f1f7', + 'calendar2-check': '\f1f8', + 'calendar2-date-fill': '\f1f9', + 'calendar2-date': '\f1fa', + 'calendar2-day-fill': '\f1fb', + 'calendar2-day': '\f1fc', + 'calendar2-event-fill': '\f1fd', + 'calendar2-event': '\f1fe', + 'calendar2-fill': '\f1ff', + 'calendar2-minus-fill': '\f200', + 'calendar2-minus': '\f201', + 'calendar2-month-fill': '\f202', + 'calendar2-month': '\f203', + 'calendar2-plus-fill': '\f204', + 'calendar2-plus': '\f205', + 'calendar2-range-fill': '\f206', + 'calendar2-range': '\f207', + 'calendar2-week-fill': '\f208', + 'calendar2-week': '\f209', + 'calendar2-x-fill': '\f20a', + 'calendar2-x': '\f20b', + 'calendar2': '\f20c', + 'calendar3-event-fill': '\f20d', + 'calendar3-event': '\f20e', + 'calendar3-fill': '\f20f', + 'calendar3-range-fill': '\f210', + 'calendar3-range': '\f211', + 'calendar3-week-fill': '\f212', + 'calendar3-week': '\f213', + 'calendar3': '\f214', + 'calendar4-event': '\f215', + 'calendar4-range': '\f216', + 'calendar4-week': '\f217', + 'calendar4': '\f218', + 'camera-fill': '\f219', + 'camera-reels-fill': '\f21a', + 'camera-reels': '\f21b', + 'camera-video-fill': '\f21c', + 'camera-video-off-fill': '\f21d', + 'camera-video-off': '\f21e', + 'camera-video': '\f21f', + 'camera': '\f220', + 'camera2': '\f221', + 'capslock-fill': '\f222', + 'capslock': '\f223', + 'card-checklist': '\f224', + 'card-heading': '\f225', + 'card-image': '\f226', + 'card-list': '\f227', + 'card-text': '\f228', + 'caret-down-fill': '\f229', + 'caret-down-square-fill': '\f22a', + 'caret-down-square': '\f22b', + 'caret-down': '\f22c', + 'caret-left-fill': '\f22d', + 'caret-left-square-fill': '\f22e', + 'caret-left-square': '\f22f', + 'caret-left': '\f230', + 'caret-right-fill': '\f231', + 'caret-right-square-fill': '\f232', + 'caret-right-square': '\f233', + 'caret-right': '\f234', + 'caret-up-fill': '\f235', + 'caret-up-square-fill': '\f236', + 'caret-up-square': '\f237', + 'caret-up': '\f238', + 'cart-check-fill': '\f239', + 'cart-check': '\f23a', + 'cart-dash-fill': '\f23b', + 'cart-dash': '\f23c', + 'cart-fill': '\f23d', + 'cart-plus-fill': '\f23e', + 'cart-plus': '\f23f', + 'cart-x-fill': '\f240', + 'cart-x': '\f241', + 'cart': '\f242', + 'cart2': '\f243', + 'cart3': '\f244', + 'cart4': '\f245', + 'cash-stack': '\f246', + 'cash': '\f247', + 'cast': '\f248', + 'chat-dots-fill': '\f249', + 'chat-dots': '\f24a', + 'chat-fill': '\f24b', + 'chat-left-dots-fill': '\f24c', + 'chat-left-dots': '\f24d', + 'chat-left-fill': '\f24e', + 'chat-left-quote-fill': '\f24f', + 'chat-left-quote': '\f250', + 'chat-left-text-fill': '\f251', + 'chat-left-text': '\f252', + 'chat-left': '\f253', + 'chat-quote-fill': '\f254', + 'chat-quote': '\f255', + 'chat-right-dots-fill': '\f256', + 'chat-right-dots': '\f257', + 'chat-right-fill': '\f258', + 'chat-right-quote-fill': '\f259', + 'chat-right-quote': '\f25a', + 'chat-right-text-fill': '\f25b', + 'chat-right-text': '\f25c', + 'chat-right': '\f25d', + 'chat-square-dots-fill': '\f25e', + 'chat-square-dots': '\f25f', + 'chat-square-fill': '\f260', + 'chat-square-quote-fill': '\f261', + 'chat-square-quote': '\f262', + 'chat-square-text-fill': '\f263', + 'chat-square-text': '\f264', + 'chat-square': '\f265', + 'chat-text-fill': '\f266', + 'chat-text': '\f267', + 'chat': '\f268', + 'check-all': '\f269', + 'check-circle-fill': '\f26a', + 'check-circle': '\f26b', + 'check-square-fill': '\f26c', + 'check-square': '\f26d', + 'check': '\f26e', + 'check2-all': '\f26f', + 'check2-circle': '\f270', + 'check2-square': '\f271', + 'check2': '\f272', + 'chevron-bar-contract': '\f273', + 'chevron-bar-down': '\f274', + 'chevron-bar-expand': '\f275', + 'chevron-bar-left': '\f276', + 'chevron-bar-right': '\f277', + 'chevron-bar-up': '\f278', + 'chevron-compact-down': '\f279', + 'chevron-compact-left': '\f27a', + 'chevron-compact-right': '\f27b', + 'chevron-compact-up': '\f27c', + 'chevron-contract': '\f27d', + 'chevron-double-down': '\f27e', + 'chevron-double-left': '\f27f', + 'chevron-double-right': '\f280', + 'chevron-double-up': '\f281', + 'chevron-down': '\f282', + 'chevron-expand': '\f283', + 'chevron-left': '\f284', + 'chevron-right': '\f285', + 'chevron-up': '\f286', + 'circle-fill': '\f287', + 'circle-half': '\f288', + 'circle-square': '\f289', + 'circle': '\f28a', + 'clipboard-check': '\f28b', + 'clipboard-data': '\f28c', + 'clipboard-minus': '\f28d', + 'clipboard-plus': '\f28e', + 'clipboard-x': '\f28f', + 'clipboard': '\f290', + 'clock-fill': '\f291', + 'clock-history': '\f292', + 'clock': '\f293', + 'cloud-arrow-down-fill': '\f294', + 'cloud-arrow-down': '\f295', + 'cloud-arrow-up-fill': '\f296', + 'cloud-arrow-up': '\f297', + 'cloud-check-fill': '\f298', + 'cloud-check': '\f299', + 'cloud-download-fill': '\f29a', + 'cloud-download': '\f29b', + 'cloud-drizzle-fill': '\f29c', + 'cloud-drizzle': '\f29d', + 'cloud-fill': '\f29e', + 'cloud-fog-fill': '\f29f', + 'cloud-fog': '\f2a0', + 'cloud-fog2-fill': '\f2a1', + 'cloud-fog2': '\f2a2', + 'cloud-hail-fill': '\f2a3', + 'cloud-hail': '\f2a4', + 'cloud-haze-fill': '\f2a6', + 'cloud-haze': '\f2a7', + 'cloud-haze2-fill': '\f2a8', + 'cloud-lightning-fill': '\f2a9', + 'cloud-lightning-rain-fill': '\f2aa', + 'cloud-lightning-rain': '\f2ab', + 'cloud-lightning': '\f2ac', + 'cloud-minus-fill': '\f2ad', + 'cloud-minus': '\f2ae', + 'cloud-moon-fill': '\f2af', + 'cloud-moon': '\f2b0', + 'cloud-plus-fill': '\f2b1', + 'cloud-plus': '\f2b2', + 'cloud-rain-fill': '\f2b3', + 'cloud-rain-heavy-fill': '\f2b4', + 'cloud-rain-heavy': '\f2b5', + 'cloud-rain': '\f2b6', + 'cloud-slash-fill': '\f2b7', + 'cloud-slash': '\f2b8', + 'cloud-sleet-fill': '\f2b9', + 'cloud-sleet': '\f2ba', + 'cloud-snow-fill': '\f2bb', + 'cloud-snow': '\f2bc', + 'cloud-sun-fill': '\f2bd', + 'cloud-sun': '\f2be', + 'cloud-upload-fill': '\f2bf', + 'cloud-upload': '\f2c0', + 'cloud': '\f2c1', + 'clouds-fill': '\f2c2', + 'clouds': '\f2c3', + 'cloudy-fill': '\f2c4', + 'cloudy': '\f2c5', + 'code-slash': '\f2c6', + 'code-square': '\f2c7', + 'code': '\f2c8', + 'collection-fill': '\f2c9', + 'collection-play-fill': '\f2ca', + 'collection-play': '\f2cb', + 'collection': '\f2cc', + 'columns-gap': '\f2cd', + 'columns': '\f2ce', + 'command': '\f2cf', + 'compass-fill': '\f2d0', + 'compass': '\f2d1', + 'cone-striped': '\f2d2', + 'cone': '\f2d3', + 'controller': '\f2d4', + 'cpu-fill': '\f2d5', + 'cpu': '\f2d6', + 'credit-card-2-back-fill': '\f2d7', + 'credit-card-2-back': '\f2d8', + 'credit-card-2-front-fill': '\f2d9', + 'credit-card-2-front': '\f2da', + 'credit-card-fill': '\f2db', + 'credit-card': '\f2dc', + 'crop': '\f2dd', + 'cup-fill': '\f2de', + 'cup-straw': '\f2df', + 'cup': '\f2e0', + 'cursor-fill': '\f2e1', + 'cursor-text': '\f2e2', + 'cursor': '\f2e3', + 'dash-circle-dotted': '\f2e4', + 'dash-circle-fill': '\f2e5', + 'dash-circle': '\f2e6', + 'dash-square-dotted': '\f2e7', + 'dash-square-fill': '\f2e8', + 'dash-square': '\f2e9', + 'dash': '\f2ea', + 'diagram-2-fill': '\f2eb', + 'diagram-2': '\f2ec', + 'diagram-3-fill': '\f2ed', + 'diagram-3': '\f2ee', + 'diamond-fill': '\f2ef', + 'diamond-half': '\f2f0', + 'diamond': '\f2f1', + 'dice-1-fill': '\f2f2', + 'dice-1': '\f2f3', + 'dice-2-fill': '\f2f4', + 'dice-2': '\f2f5', + 'dice-3-fill': '\f2f6', + 'dice-3': '\f2f7', + 'dice-4-fill': '\f2f8', + 'dice-4': '\f2f9', + 'dice-5-fill': '\f2fa', + 'dice-5': '\f2fb', + 'dice-6-fill': '\f2fc', + 'dice-6': '\f2fd', + 'disc-fill': '\f2fe', + 'disc': '\f2ff', + 'discord': '\f300', + 'display-fill': '\f301', + 'display': '\f302', + 'distribute-horizontal': '\f303', + 'distribute-vertical': '\f304', + 'door-closed-fill': '\f305', + 'door-closed': '\f306', + 'door-open-fill': '\f307', + 'door-open': '\f308', + 'dot': '\f309', + 'download': '\f30a', + 'droplet-fill': '\f30b', + 'droplet-half': '\f30c', + 'droplet': '\f30d', + 'earbuds': '\f30e', + 'easel-fill': '\f30f', + 'easel': '\f310', + 'egg-fill': '\f311', + 'egg-fried': '\f312', + 'egg': '\f313', + 'eject-fill': '\f314', + 'eject': '\f315', + 'emoji-angry-fill': '\f316', + 'emoji-angry': '\f317', + 'emoji-dizzy-fill': '\f318', + 'emoji-dizzy': '\f319', + 'emoji-expressionless-fill': '\f31a', + 'emoji-expressionless': '\f31b', + 'emoji-frown-fill': '\f31c', + 'emoji-frown': '\f31d', + 'emoji-heart-eyes-fill': '\f31e', + 'emoji-heart-eyes': '\f31f', + 'emoji-laughing-fill': '\f320', + 'emoji-laughing': '\f321', + 'emoji-neutral-fill': '\f322', + 'emoji-neutral': '\f323', + 'emoji-smile-fill': '\f324', + 'emoji-smile-upside-down-fill': '\f325', + 'emoji-smile-upside-down': '\f326', + 'emoji-smile': '\f327', + 'emoji-sunglasses-fill': '\f328', + 'emoji-sunglasses': '\f329', + 'emoji-wink-fill': '\f32a', + 'emoji-wink': '\f32b', + 'envelope-fill': '\f32c', + 'envelope-open-fill': '\f32d', + 'envelope-open': '\f32e', + 'envelope': '\f32f', + 'eraser-fill': '\f330', + 'eraser': '\f331', + 'exclamation-circle-fill': '\f332', + 'exclamation-circle': '\f333', + 'exclamation-diamond-fill': '\f334', + 'exclamation-diamond': '\f335', + 'exclamation-octagon-fill': '\f336', + 'exclamation-octagon': '\f337', + 'exclamation-square-fill': '\f338', + 'exclamation-square': '\f339', + 'exclamation-triangle-fill': '\f33a', + 'exclamation-triangle': '\f33b', + 'exclamation': '\f33c', + 'exclude': '\f33d', + 'eye-fill': '\f33e', + 'eye-slash-fill': '\f33f', + 'eye-slash': '\f340', + 'eye': '\f341', + 'eyedropper': '\f342', + 'eyeglasses': '\f343', + 'facebook': '\f344', + 'file-arrow-down-fill': '\f345', + 'file-arrow-down': '\f346', + 'file-arrow-up-fill': '\f347', + 'file-arrow-up': '\f348', + 'file-bar-graph-fill': '\f349', + 'file-bar-graph': '\f34a', + 'file-binary-fill': '\f34b', + 'file-binary': '\f34c', + 'file-break-fill': '\f34d', + 'file-break': '\f34e', + 'file-check-fill': '\f34f', + 'file-check': '\f350', + 'file-code-fill': '\f351', + 'file-code': '\f352', + 'file-diff-fill': '\f353', + 'file-diff': '\f354', + 'file-earmark-arrow-down-fill': '\f355', + 'file-earmark-arrow-down': '\f356', + 'file-earmark-arrow-up-fill': '\f357', + 'file-earmark-arrow-up': '\f358', + 'file-earmark-bar-graph-fill': '\f359', + 'file-earmark-bar-graph': '\f35a', + 'file-earmark-binary-fill': '\f35b', + 'file-earmark-binary': '\f35c', + 'file-earmark-break-fill': '\f35d', + 'file-earmark-break': '\f35e', + 'file-earmark-check-fill': '\f35f', + 'file-earmark-check': '\f360', + 'file-earmark-code-fill': '\f361', + 'file-earmark-code': '\f362', + 'file-earmark-diff-fill': '\f363', + 'file-earmark-diff': '\f364', + 'file-earmark-easel-fill': '\f365', + 'file-earmark-easel': '\f366', + 'file-earmark-excel-fill': '\f367', + 'file-earmark-excel': '\f368', + 'file-earmark-fill': '\f369', + 'file-earmark-font-fill': '\f36a', + 'file-earmark-font': '\f36b', + 'file-earmark-image-fill': '\f36c', + 'file-earmark-image': '\f36d', + 'file-earmark-lock-fill': '\f36e', + 'file-earmark-lock': '\f36f', + 'file-earmark-lock2-fill': '\f370', + 'file-earmark-lock2': '\f371', + 'file-earmark-medical-fill': '\f372', + 'file-earmark-medical': '\f373', + 'file-earmark-minus-fill': '\f374', + 'file-earmark-minus': '\f375', + 'file-earmark-music-fill': '\f376', + 'file-earmark-music': '\f377', + 'file-earmark-person-fill': '\f378', + 'file-earmark-person': '\f379', + 'file-earmark-play-fill': '\f37a', + 'file-earmark-play': '\f37b', + 'file-earmark-plus-fill': '\f37c', + 'file-earmark-plus': '\f37d', + 'file-earmark-post-fill': '\f37e', + 'file-earmark-post': '\f37f', + 'file-earmark-ppt-fill': '\f380', + 'file-earmark-ppt': '\f381', + 'file-earmark-richtext-fill': '\f382', + 'file-earmark-richtext': '\f383', + 'file-earmark-ruled-fill': '\f384', + 'file-earmark-ruled': '\f385', + 'file-earmark-slides-fill': '\f386', + 'file-earmark-slides': '\f387', + 'file-earmark-spreadsheet-fill': '\f388', + 'file-earmark-spreadsheet': '\f389', + 'file-earmark-text-fill': '\f38a', + 'file-earmark-text': '\f38b', + 'file-earmark-word-fill': '\f38c', + 'file-earmark-word': '\f38d', + 'file-earmark-x-fill': '\f38e', + 'file-earmark-x': '\f38f', + 'file-earmark-zip-fill': '\f390', + 'file-earmark-zip': '\f391', + 'file-earmark': '\f392', + 'file-easel-fill': '\f393', + 'file-easel': '\f394', + 'file-excel-fill': '\f395', + 'file-excel': '\f396', + 'file-fill': '\f397', + 'file-font-fill': '\f398', + 'file-font': '\f399', + 'file-image-fill': '\f39a', + 'file-image': '\f39b', + 'file-lock-fill': '\f39c', + 'file-lock': '\f39d', + 'file-lock2-fill': '\f39e', + 'file-lock2': '\f39f', + 'file-medical-fill': '\f3a0', + 'file-medical': '\f3a1', + 'file-minus-fill': '\f3a2', + 'file-minus': '\f3a3', + 'file-music-fill': '\f3a4', + 'file-music': '\f3a5', + 'file-person-fill': '\f3a6', + 'file-person': '\f3a7', + 'file-play-fill': '\f3a8', + 'file-play': '\f3a9', + 'file-plus-fill': '\f3aa', + 'file-plus': '\f3ab', + 'file-post-fill': '\f3ac', + 'file-post': '\f3ad', + 'file-ppt-fill': '\f3ae', + 'file-ppt': '\f3af', + 'file-richtext-fill': '\f3b0', + 'file-richtext': '\f3b1', + 'file-ruled-fill': '\f3b2', + 'file-ruled': '\f3b3', + 'file-slides-fill': '\f3b4', + 'file-slides': '\f3b5', + 'file-spreadsheet-fill': '\f3b6', + 'file-spreadsheet': '\f3b7', + 'file-text-fill': '\f3b8', + 'file-text': '\f3b9', + 'file-word-fill': '\f3ba', + 'file-word': '\f3bb', + 'file-x-fill': '\f3bc', + 'file-x': '\f3bd', + 'file-zip-fill': '\f3be', + 'file-zip': '\f3bf', + 'file': '\f3c0', + 'files-alt': '\f3c1', + 'files': '\f3c2', + 'film': '\f3c3', + 'filter-circle-fill': '\f3c4', + 'filter-circle': '\f3c5', + 'filter-left': '\f3c6', + 'filter-right': '\f3c7', + 'filter-square-fill': '\f3c8', + 'filter-square': '\f3c9', + 'filter': '\f3ca', + 'flag-fill': '\f3cb', + 'flag': '\f3cc', + 'flower1': '\f3cd', + 'flower2': '\f3ce', + 'flower3': '\f3cf', + 'folder-check': '\f3d0', + 'folder-fill': '\f3d1', + 'folder-minus': '\f3d2', + 'folder-plus': '\f3d3', + 'folder-symlink-fill': '\f3d4', + 'folder-symlink': '\f3d5', + 'folder-x': '\f3d6', + 'folder': '\f3d7', + 'folder2-open': '\f3d8', + 'folder2': '\f3d9', + 'fonts': '\f3da', + 'forward-fill': '\f3db', + 'forward': '\f3dc', + 'front': '\f3dd', + 'fullscreen-exit': '\f3de', + 'fullscreen': '\f3df', + 'funnel-fill': '\f3e0', + 'funnel': '\f3e1', + 'gear-fill': '\f3e2', + 'gear-wide-connected': '\f3e3', + 'gear-wide': '\f3e4', + 'gear': '\f3e5', + 'gem': '\f3e6', + 'geo-alt-fill': '\f3e7', + 'geo-alt': '\f3e8', + 'geo-fill': '\f3e9', + 'geo': '\f3ea', + 'gift-fill': '\f3eb', + 'gift': '\f3ec', + 'github': '\f3ed', + 'globe': '\f3ee', + 'globe2': '\f3ef', + 'google': '\f3f0', + 'graph-down': '\f3f1', + 'graph-up': '\f3f2', + 'grid-1x2-fill': '\f3f3', + 'grid-1x2': '\f3f4', + 'grid-3x2-gap-fill': '\f3f5', + 'grid-3x2-gap': '\f3f6', + 'grid-3x2': '\f3f7', + 'grid-3x3-gap-fill': '\f3f8', + 'grid-3x3-gap': '\f3f9', + 'grid-3x3': '\f3fa', + 'grid-fill': '\f3fb', + 'grid': '\f3fc', + 'grip-horizontal': '\f3fd', + 'grip-vertical': '\f3fe', + 'hammer': '\f3ff', + 'hand-index-fill': '\f400', + 'hand-index-thumb-fill': '\f401', + 'hand-index-thumb': '\f402', + 'hand-index': '\f403', + 'hand-thumbs-down-fill': '\f404', + 'hand-thumbs-down': '\f405', + 'hand-thumbs-up-fill': '\f406', + 'hand-thumbs-up': '\f407', + 'handbag-fill': '\f408', + 'handbag': '\f409', + 'hash': '\f40a', + 'hdd-fill': '\f40b', + 'hdd-network-fill': '\f40c', + 'hdd-network': '\f40d', + 'hdd-rack-fill': '\f40e', + 'hdd-rack': '\f40f', + 'hdd-stack-fill': '\f410', + 'hdd-stack': '\f411', + 'hdd': '\f412', + 'headphones': '\f413', + 'headset': '\f414', + 'heart-fill': '\f415', + 'heart-half': '\f416', + 'heart': '\f417', + 'heptagon-fill': '\f418', + 'heptagon-half': '\f419', + 'heptagon': '\f41a', + 'hexagon-fill': '\f41b', + 'hexagon-half': '\f41c', + 'hexagon': '\f41d', + 'hourglass-bottom': '\f41e', + 'hourglass-split': '\f41f', + 'hourglass-top': '\f420', + 'hourglass': '\f421', + 'house-door-fill': '\f422', + 'house-door': '\f423', + 'house-fill': '\f424', + 'house': '\f425', + 'hr': '\f426', + 'hurricane': '\f427', + 'image-alt': '\f428', + 'image-fill': '\f429', + 'image': '\f42a', + 'images': '\f42b', + 'inbox-fill': '\f42c', + 'inbox': '\f42d', + 'inboxes-fill': '\f42e', + 'inboxes': '\f42f', + 'info-circle-fill': '\f430', + 'info-circle': '\f431', + 'info-square-fill': '\f432', + 'info-square': '\f433', + 'info': '\f434', + 'input-cursor-text': '\f435', + 'input-cursor': '\f436', + 'instagram': '\f437', + 'intersect': '\f438', + 'journal-album': '\f439', + 'journal-arrow-down': '\f43a', + 'journal-arrow-up': '\f43b', + 'journal-bookmark-fill': '\f43c', + 'journal-bookmark': '\f43d', + 'journal-check': '\f43e', + 'journal-code': '\f43f', + 'journal-medical': '\f440', + 'journal-minus': '\f441', + 'journal-plus': '\f442', + 'journal-richtext': '\f443', + 'journal-text': '\f444', + 'journal-x': '\f445', + 'journal': '\f446', + 'journals': '\f447', + 'joystick': '\f448', + 'justify-left': '\f449', + 'justify-right': '\f44a', + 'justify': '\f44b', + 'kanban-fill': '\f44c', + 'kanban': '\f44d', + 'key-fill': '\f44e', + 'key': '\f44f', + 'keyboard-fill': '\f450', + 'keyboard': '\f451', + 'ladder': '\f452', + 'lamp-fill': '\f453', + 'lamp': '\f454', + 'laptop-fill': '\f455', + 'laptop': '\f456', + 'layer-backward': '\f457', + 'layer-forward': '\f458', + 'layers-fill': '\f459', + 'layers-half': '\f45a', + 'layers': '\f45b', + 'layout-sidebar-inset-reverse': '\f45c', + 'layout-sidebar-inset': '\f45d', + 'layout-sidebar-reverse': '\f45e', + 'layout-sidebar': '\f45f', + 'layout-split': '\f460', + 'layout-text-sidebar-reverse': '\f461', + 'layout-text-sidebar': '\f462', + 'layout-text-window-reverse': '\f463', + 'layout-text-window': '\f464', + 'layout-three-columns': '\f465', + 'layout-wtf': '\f466', + 'life-preserver': '\f467', + 'lightbulb-fill': '\f468', + 'lightbulb-off-fill': '\f469', + 'lightbulb-off': '\f46a', + 'lightbulb': '\f46b', + 'lightning-charge-fill': '\f46c', + 'lightning-charge': '\f46d', + 'lightning-fill': '\f46e', + 'lightning': '\f46f', + 'link-45deg': '\f470', + 'link': '\f471', + 'linkedin': '\f472', + 'list-check': '\f473', + 'list-nested': '\f474', + 'list-ol': '\f475', + 'list-stars': '\f476', + 'list-task': '\f477', + 'list-ul': '\f478', + 'list': '\f479', + 'lock-fill': '\f47a', + 'lock': '\f47b', + 'mailbox': '\f47c', + 'mailbox2': '\f47d', + 'map-fill': '\f47e', + 'map': '\f47f', + 'markdown-fill': '\f480', + 'markdown': '\f481', + 'mask': '\f482', + 'megaphone-fill': '\f483', + 'megaphone': '\f484', + 'menu-app-fill': '\f485', + 'menu-app': '\f486', + 'menu-button-fill': '\f487', + 'menu-button-wide-fill': '\f488', + 'menu-button-wide': '\f489', + 'menu-button': '\f48a', + 'menu-down': '\f48b', + 'menu-up': '\f48c', + 'mic-fill': '\f48d', + 'mic-mute-fill': '\f48e', + 'mic-mute': '\f48f', + 'mic': '\f490', + 'minecart-loaded': '\f491', + 'minecart': '\f492', + 'moisture': '\f493', + 'moon-fill': '\f494', + 'moon-stars-fill': '\f495', + 'moon-stars': '\f496', + 'moon': '\f497', + 'mouse-fill': '\f498', + 'mouse': '\f499', + 'mouse2-fill': '\f49a', + 'mouse2': '\f49b', + 'mouse3-fill': '\f49c', + 'mouse3': '\f49d', + 'music-note-beamed': '\f49e', + 'music-note-list': '\f49f', + 'music-note': '\f4a0', + 'music-player-fill': '\f4a1', + 'music-player': '\f4a2', + 'newspaper': '\f4a3', + 'node-minus-fill': '\f4a4', + 'node-minus': '\f4a5', + 'node-plus-fill': '\f4a6', + 'node-plus': '\f4a7', + 'nut-fill': '\f4a8', + 'nut': '\f4a9', + 'octagon-fill': '\f4aa', + 'octagon-half': '\f4ab', + 'octagon': '\f4ac', + 'option': '\f4ad', + 'outlet': '\f4ae', + 'paint-bucket': '\f4af', + 'palette-fill': '\f4b0', + 'palette': '\f4b1', + 'palette2': '\f4b2', + 'paperclip': '\f4b3', + 'paragraph': '\f4b4', + 'patch-check-fill': '\f4b5', + 'patch-check': '\f4b6', + 'patch-exclamation-fill': '\f4b7', + 'patch-exclamation': '\f4b8', + 'patch-minus-fill': '\f4b9', + 'patch-minus': '\f4ba', + 'patch-plus-fill': '\f4bb', + 'patch-plus': '\f4bc', + 'patch-question-fill': '\f4bd', + 'patch-question': '\f4be', + 'pause-btn-fill': '\f4bf', + 'pause-btn': '\f4c0', + 'pause-circle-fill': '\f4c1', + 'pause-circle': '\f4c2', + 'pause-fill': '\f4c3', + 'pause': '\f4c4', + 'peace-fill': '\f4c5', + 'peace': '\f4c6', + 'pen-fill': '\f4c7', + 'pen': '\f4c8', + 'pencil-fill': '\f4c9', + 'pencil-square': '\f4ca', + 'pencil': '\f4cb', + 'pentagon-fill': '\f4cc', + 'pentagon-half': '\f4cd', + 'pentagon': '\f4ce', + 'people-fill': '\f4cf', + 'people': '\f4d0', + 'percent': '\f4d1', + 'person-badge-fill': '\f4d2', + 'person-badge': '\f4d3', + 'person-bounding-box': '\f4d4', + 'person-check-fill': '\f4d5', + 'person-check': '\f4d6', + 'person-circle': '\f4d7', + 'person-dash-fill': '\f4d8', + 'person-dash': '\f4d9', + 'person-fill': '\f4da', + 'person-lines-fill': '\f4db', + 'person-plus-fill': '\f4dc', + 'person-plus': '\f4dd', + 'person-square': '\f4de', + 'person-x-fill': '\f4df', + 'person-x': '\f4e0', + 'person': '\f4e1', + 'phone-fill': '\f4e2', + 'phone-landscape-fill': '\f4e3', + 'phone-landscape': '\f4e4', + 'phone-vibrate-fill': '\f4e5', + 'phone-vibrate': '\f4e6', + 'phone': '\f4e7', + 'pie-chart-fill': '\f4e8', + 'pie-chart': '\f4e9', + 'pin-angle-fill': '\f4ea', + 'pin-angle': '\f4eb', + 'pin-fill': '\f4ec', + 'pin': '\f4ed', + 'pip-fill': '\f4ee', + 'pip': '\f4ef', + 'play-btn-fill': '\f4f0', + 'play-btn': '\f4f1', + 'play-circle-fill': '\f4f2', + 'play-circle': '\f4f3', + 'play-fill': '\f4f4', + 'play': '\f4f5', + 'plug-fill': '\f4f6', + 'plug': '\f4f7', + 'plus-circle-dotted': '\f4f8', + 'plus-circle-fill': '\f4f9', + 'plus-circle': '\f4fa', + 'plus-square-dotted': '\f4fb', + 'plus-square-fill': '\f4fc', + 'plus-square': '\f4fd', + 'plus': '\f4fe', + 'power': '\f4ff', + 'printer-fill': '\f500', + 'printer': '\f501', + 'puzzle-fill': '\f502', + 'puzzle': '\f503', + 'question-circle-fill': '\f504', + 'question-circle': '\f505', + 'question-diamond-fill': '\f506', + 'question-diamond': '\f507', + 'question-octagon-fill': '\f508', + 'question-octagon': '\f509', + 'question-square-fill': '\f50a', + 'question-square': '\f50b', + 'question': '\f50c', + 'rainbow': '\f50d', + 'receipt-cutoff': '\f50e', + 'receipt': '\f50f', + 'reception-0': '\f510', + 'reception-1': '\f511', + 'reception-2': '\f512', + 'reception-3': '\f513', + 'reception-4': '\f514', + 'record-btn-fill': '\f515', + 'record-btn': '\f516', + 'record-circle-fill': '\f517', + 'record-circle': '\f518', + 'record-fill': '\f519', + 'record': '\f51a', + 'record2-fill': '\f51b', + 'record2': '\f51c', + 'reply-all-fill': '\f51d', + 'reply-all': '\f51e', + 'reply-fill': '\f51f', + 'reply': '\f520', + 'rss-fill': '\f521', + 'rss': '\f522', + 'rulers': '\f523', + 'save-fill': '\f524', + 'save': '\f525', + 'save2-fill': '\f526', + 'save2': '\f527', + 'scissors': '\f528', + 'screwdriver': '\f529', + 'search': '\f52a', + 'segmented-nav': '\f52b', + 'server': '\f52c', + 'share-fill': '\f52d', + 'share': '\f52e', + 'shield-check': '\f52f', + 'shield-exclamation': '\f530', + 'shield-fill-check': '\f531', + 'shield-fill-exclamation': '\f532', + 'shield-fill-minus': '\f533', + 'shield-fill-plus': '\f534', + 'shield-fill-x': '\f535', + 'shield-fill': '\f536', + 'shield-lock-fill': '\f537', + 'shield-lock': '\f538', + 'shield-minus': '\f539', + 'shield-plus': '\f53a', + 'shield-shaded': '\f53b', + 'shield-slash-fill': '\f53c', + 'shield-slash': '\f53d', + 'shield-x': '\f53e', + 'shield': '\f53f', + 'shift-fill': '\f540', + 'shift': '\f541', + 'shop-window': '\f542', + 'shop': '\f543', + 'shuffle': '\f544', + 'signpost-2-fill': '\f545', + 'signpost-2': '\f546', + 'signpost-fill': '\f547', + 'signpost-split-fill': '\f548', + 'signpost-split': '\f549', + 'signpost': '\f54a', + 'sim-fill': '\f54b', + 'sim': '\f54c', + 'skip-backward-btn-fill': '\f54d', + 'skip-backward-btn': '\f54e', + 'skip-backward-circle-fill': '\f54f', + 'skip-backward-circle': '\f550', + 'skip-backward-fill': '\f551', + 'skip-backward': '\f552', + 'skip-end-btn-fill': '\f553', + 'skip-end-btn': '\f554', + 'skip-end-circle-fill': '\f555', + 'skip-end-circle': '\f556', + 'skip-end-fill': '\f557', + 'skip-end': '\f558', + 'skip-forward-btn-fill': '\f559', + 'skip-forward-btn': '\f55a', + 'skip-forward-circle-fill': '\f55b', + 'skip-forward-circle': '\f55c', + 'skip-forward-fill': '\f55d', + 'skip-forward': '\f55e', + 'skip-start-btn-fill': '\f55f', + 'skip-start-btn': '\f560', + 'skip-start-circle-fill': '\f561', + 'skip-start-circle': '\f562', + 'skip-start-fill': '\f563', + 'skip-start': '\f564', + 'slack': '\f565', + 'slash-circle-fill': '\f566', + 'slash-circle': '\f567', + 'slash-square-fill': '\f568', + 'slash-square': '\f569', + 'slash': '\f56a', + 'sliders': '\f56b', + 'smartwatch': '\f56c', + 'snow': '\f56d', + 'snow2': '\f56e', + 'snow3': '\f56f', + 'sort-alpha-down-alt': '\f570', + 'sort-alpha-down': '\f571', + 'sort-alpha-up-alt': '\f572', + 'sort-alpha-up': '\f573', + 'sort-down-alt': '\f574', + 'sort-down': '\f575', + 'sort-numeric-down-alt': '\f576', + 'sort-numeric-down': '\f577', + 'sort-numeric-up-alt': '\f578', + 'sort-numeric-up': '\f579', + 'sort-up-alt': '\f57a', + 'sort-up': '\f57b', + 'soundwave': '\f57c', + 'speaker-fill': '\f57d', + 'speaker': '\f57e', + 'speedometer': '\f57f', + 'speedometer2': '\f580', + 'spellcheck': '\f581', + 'square-fill': '\f582', + 'square-half': '\f583', + 'square': '\f584', + 'stack': '\f585', + 'star-fill': '\f586', + 'star-half': '\f587', + 'star': '\f588', + 'stars': '\f589', + 'stickies-fill': '\f58a', + 'stickies': '\f58b', + 'sticky-fill': '\f58c', + 'sticky': '\f58d', + 'stop-btn-fill': '\f58e', + 'stop-btn': '\f58f', + 'stop-circle-fill': '\f590', + 'stop-circle': '\f591', + 'stop-fill': '\f592', + 'stop': '\f593', + 'stoplights-fill': '\f594', + 'stoplights': '\f595', + 'stopwatch-fill': '\f596', + 'stopwatch': '\f597', + 'subtract': '\f598', + 'suit-club-fill': '\f599', + 'suit-club': '\f59a', + 'suit-diamond-fill': '\f59b', + 'suit-diamond': '\f59c', + 'suit-heart-fill': '\f59d', + 'suit-heart': '\f59e', + 'suit-spade-fill': '\f59f', + 'suit-spade': '\f5a0', + 'sun-fill': '\f5a1', + 'sun': '\f5a2', + 'sunglasses': '\f5a3', + 'sunrise-fill': '\f5a4', + 'sunrise': '\f5a5', + 'sunset-fill': '\f5a6', + 'sunset': '\f5a7', + 'symmetry-horizontal': '\f5a8', + 'symmetry-vertical': '\f5a9', + 'table': '\f5aa', + 'tablet-fill': '\f5ab', + 'tablet-landscape-fill': '\f5ac', + 'tablet-landscape': '\f5ad', + 'tablet': '\f5ae', + 'tag-fill': '\f5af', + 'tag': '\f5b0', + 'tags-fill': '\f5b1', + 'tags': '\f5b2', + 'telegram': '\f5b3', + 'telephone-fill': '\f5b4', + 'telephone-forward-fill': '\f5b5', + 'telephone-forward': '\f5b6', + 'telephone-inbound-fill': '\f5b7', + 'telephone-inbound': '\f5b8', + 'telephone-minus-fill': '\f5b9', + 'telephone-minus': '\f5ba', + 'telephone-outbound-fill': '\f5bb', + 'telephone-outbound': '\f5bc', + 'telephone-plus-fill': '\f5bd', + 'telephone-plus': '\f5be', + 'telephone-x-fill': '\f5bf', + 'telephone-x': '\f5c0', + 'telephone': '\f5c1', + 'terminal-fill': '\f5c2', + 'terminal': '\f5c3', + 'text-center': '\f5c4', + 'text-indent-left': '\f5c5', + 'text-indent-right': '\f5c6', + 'text-left': '\f5c7', + 'text-paragraph': '\f5c8', + 'text-right': '\f5c9', + 'textarea-resize': '\f5ca', + 'textarea-t': '\f5cb', + 'textarea': '\f5cc', + 'thermometer-half': '\f5cd', + 'thermometer-high': '\f5ce', + 'thermometer-low': '\f5cf', + 'thermometer-snow': '\f5d0', + 'thermometer-sun': '\f5d1', + 'thermometer': '\f5d2', + 'three-dots-vertical': '\f5d3', + 'three-dots': '\f5d4', + 'toggle-off': '\f5d5', + 'toggle-on': '\f5d6', + 'toggle2-off': '\f5d7', + 'toggle2-on': '\f5d8', + 'toggles': '\f5d9', + 'toggles2': '\f5da', + 'tools': '\f5db', + 'tornado': '\f5dc', + 'trash-fill': '\f5dd', + 'trash': '\f5de', + 'trash2-fill': '\f5df', + 'trash2': '\f5e0', + 'tree-fill': '\f5e1', + 'tree': '\f5e2', + 'triangle-fill': '\f5e3', + 'triangle-half': '\f5e4', + 'triangle': '\f5e5', + 'trophy-fill': '\f5e6', + 'trophy': '\f5e7', + 'tropical-storm': '\f5e8', + 'truck-flatbed': '\f5e9', + 'truck': '\f5ea', + 'tsunami': '\f5eb', + 'tv-fill': '\f5ec', + 'tv': '\f5ed', + 'twitch': '\f5ee', + 'twitter': '\f5ef', + 'type-bold': '\f5f0', + 'type-h1': '\f5f1', + 'type-h2': '\f5f2', + 'type-h3': '\f5f3', + 'type-italic': '\f5f4', + 'type-strikethrough': '\f5f5', + 'type-underline': '\f5f6', + 'type': '\f5f7', + 'ui-checks-grid': '\f5f8', + 'ui-checks': '\f5f9', + 'ui-radios-grid': '\f5fa', + 'ui-radios': '\f5fb', + 'umbrella-fill': '\f5fc', + 'umbrella': '\f5fd', + 'union': '\f5fe', + 'unlock-fill': '\f5ff', + 'unlock': '\f600', + 'upc-scan': '\f601', + 'upc': '\f602', + 'upload': '\f603', + 'vector-pen': '\f604', + 'view-list': '\f605', + 'view-stacked': '\f606', + 'vinyl-fill': '\f607', + 'vinyl': '\f608', + 'voicemail': '\f609', + 'volume-down-fill': '\f60a', + 'volume-down': '\f60b', + 'volume-mute-fill': '\f60c', + 'volume-mute': '\f60d', + 'volume-off-fill': '\f60e', + 'volume-off': '\f60f', + 'volume-up-fill': '\f610', + 'volume-up': '\f611', + 'vr': '\f612', + 'wallet-fill': '\f613', + 'wallet': '\f614', + 'wallet2': '\f615', + 'watch': '\f616', + 'water': '\f617', + 'whatsapp': '\f618', + 'wifi-1': '\f619', + 'wifi-2': '\f61a', + 'wifi-off': '\f61b', + 'wifi': '\f61c', + 'wind': '\f61d', + 'window-dock': '\f61e', + 'window-sidebar': '\f61f', + 'window': '\f620', + 'wrench': '\f621', + 'x-circle-fill': '\f622', + 'x-circle': '\f623', + 'x-diamond-fill': '\f624', + 'x-diamond': '\f625', + 'x-octagon-fill': '\f626', + 'x-octagon': '\f627', + 'x-square-fill': '\f628', + 'x-square': '\f629', + 'x': '\f62a', + 'youtube': '\f62b', + 'zoom-in': '\f62c', + 'zoom-out': '\f62d', + 'bank': '\f62e', + 'bank2': '\f62f', + 'bell-slash-fill': '\f630', + 'bell-slash': '\f631', + 'cash-coin': '\f632', + 'check-lg': '\f633', + 'coin': '\f634', + 'currency-bitcoin': '\f635', + 'currency-dollar': '\f636', + 'currency-euro': '\f637', + 'currency-exchange': '\f638', + 'currency-pound': '\f639', + 'currency-yen': '\f63a', + 'dash-lg': '\f63b', + 'exclamation-lg': '\f63c', + 'file-earmark-pdf-fill': '\f63d', + 'file-earmark-pdf': '\f63e', + 'file-pdf-fill': '\f63f', + 'file-pdf': '\f640', + 'gender-ambiguous': '\f641', + 'gender-female': '\f642', + 'gender-male': '\f643', + 'gender-trans': '\f644', + 'headset-vr': '\f645', + 'info-lg': '\f646', + 'mastodon': '\f647', + 'messenger': '\f648', + 'piggy-bank-fill': '\f649', + 'piggy-bank': '\f64a', + 'pin-map-fill': '\f64b', + 'pin-map': '\f64c', + 'plus-lg': '\f64d', + 'question-lg': '\f64e', + 'recycle': '\f64f', + 'reddit': '\f650', + 'safe-fill': '\f651', + 'safe2-fill': '\f652', + 'safe2': '\f653', + 'sd-card-fill': '\f654', + 'sd-card': '\f655', + 'skype': '\f656', + 'slash-lg': '\f657', + 'translate': '\f658', + 'x-lg': '\f659', + 'safe': '\f65a', + 'apple': '\f65b', + 'microsoft': '\f65d', + 'windows': '\f65e', + 'behance': '\f65c', + 'dribbble': '\f65f', + 'line': '\f660', + 'medium': '\f661', + 'paypal': '\f662', + 'pinterest': '\f663', + 'signal': '\f664', + 'snapchat': '\f665', + 'spotify': '\f666', + 'stack-overflow': '\f667', + 'strava': '\f668', + 'wordpress': '\f669', + 'vimeo': '\f66a', + 'activity': '\f66b', + 'easel2-fill': '\f66c', + 'easel2': '\f66d', + 'easel3-fill': '\f66e', + 'easel3': '\f66f', + 'fan': '\f670', + 'fingerprint': '\f671', + 'graph-down-arrow': '\f672', + 'graph-up-arrow': '\f673', + 'hypnotize': '\f674', + 'magic': '\f675', + 'person-rolodex': '\f676', + 'person-video': '\f677', + 'person-video2': '\f678', + 'person-video3': '\f679', + 'person-workspace': '\f67a', + 'radioactive': '\f67b', + 'webcam-fill': '\f67c', + 'webcam': '\f67d', + 'yin-yang': '\f67e', + 'bandaid-fill': '\f680', + 'bandaid': '\f681', + 'bluetooth': '\f682', + 'body-text': '\f683', + 'boombox': '\f684', + 'boxes': '\f685', + 'dpad-fill': '\f686', + 'dpad': '\f687', + 'ear-fill': '\f688', + 'ear': '\f689', + 'envelope-check-fill': '\f68b', + 'envelope-check': '\f68c', + 'envelope-dash-fill': '\f68e', + 'envelope-dash': '\f68f', + 'envelope-exclamation-fill': '\f691', + 'envelope-exclamation': '\f692', + 'envelope-plus-fill': '\f693', + 'envelope-plus': '\f694', + 'envelope-slash-fill': '\f696', + 'envelope-slash': '\f697', + 'envelope-x-fill': '\f699', + 'envelope-x': '\f69a', + 'explicit-fill': '\f69b', + 'explicit': '\f69c', + 'git': '\f69d', + 'infinity': '\f69e', + 'list-columns-reverse': '\f69f', + 'list-columns': '\f6a0', + 'meta': '\f6a1', + 'nintendo-switch': '\f6a4', + 'pc-display-horizontal': '\f6a5', + 'pc-display': '\f6a6', + 'pc-horizontal': '\f6a7', + 'pc': '\f6a8', + 'playstation': '\f6a9', + 'plus-slash-minus': '\f6aa', + 'projector-fill': '\f6ab', + 'projector': '\f6ac', + 'qr-code-scan': '\f6ad', + 'qr-code': '\f6ae', + 'quora': '\f6af', + 'quote': '\f6b0', + 'robot': '\f6b1', + 'send-check-fill': '\f6b2', + 'send-check': '\f6b3', + 'send-dash-fill': '\f6b4', + 'send-dash': '\f6b5', + 'send-exclamation-fill': '\f6b7', + 'send-exclamation': '\f6b8', + 'send-fill': '\f6b9', + 'send-plus-fill': '\f6ba', + 'send-plus': '\f6bb', + 'send-slash-fill': '\f6bc', + 'send-slash': '\f6bd', + 'send-x-fill': '\f6be', + 'send-x': '\f6bf', + 'send': '\f6c0', + 'steam': '\f6c1', + 'terminal-dash': '\f6c3', + 'terminal-plus': '\f6c4', + 'terminal-split': '\f6c5', + 'ticket-detailed-fill': '\f6c6', + 'ticket-detailed': '\f6c7', + 'ticket-fill': '\f6c8', + 'ticket-perforated-fill': '\f6c9', + 'ticket-perforated': '\f6ca', + 'ticket': '\f6cb', + 'tiktok': '\f6cc', + 'window-dash': '\f6cd', + 'window-desktop': '\f6ce', + 'window-fullscreen': '\f6cf', + 'window-plus': '\f6d0', + 'window-split': '\f6d1', + 'window-stack': '\f6d2', + 'window-x': '\f6d3', + 'xbox': '\f6d4', + 'ethernet': '\f6d5', + 'hdmi-fill': '\f6d6', + 'hdmi': '\f6d7', + 'usb-c-fill': '\f6d8', + 'usb-c': '\f6d9', + 'usb-fill': '\f6da', + 'usb-plug-fill': '\f6db', + 'usb-plug': '\f6dc', + 'usb-symbol': '\f6dd', + 'usb': '\f6de', + 'boombox-fill': '\f6df', + 'displayport': '\f6e1', + 'gpu-card': '\f6e2', + 'memory': '\f6e3', + 'modem-fill': '\f6e4', + 'modem': '\f6e5', + 'motherboard-fill': '\f6e6', + 'motherboard': '\f6e7', + 'optical-audio-fill': '\f6e8', + 'optical-audio': '\f6e9', + 'pci-card': '\f6ea', + 'router-fill': '\f6eb', + 'router': '\f6ec', + 'thunderbolt-fill': '\f6ef', + 'thunderbolt': '\f6f0', + 'usb-drive-fill': '\f6f1', + 'usb-drive': '\f6f2', + 'usb-micro-fill': '\f6f3', + 'usb-micro': '\f6f4', + 'usb-mini-fill': '\f6f5', + 'usb-mini': '\f6f6', + 'cloud-haze2': '\f6f7', + 'device-hdd-fill': '\f6f8', + 'device-hdd': '\f6f9', + 'device-ssd-fill': '\f6fa', + 'device-ssd': '\f6fb', + 'displayport-fill': '\f6fc', + 'mortarboard-fill': '\f6fd', + 'mortarboard': '\f6fe', + 'terminal-x': '\f6ff', + 'arrow-through-heart-fill': '\f700', + 'arrow-through-heart': '\f701', + 'badge-sd-fill': '\f702', + 'badge-sd': '\f703', + 'bag-heart-fill': '\f704', + 'bag-heart': '\f705', + 'balloon-fill': '\f706', + 'balloon-heart-fill': '\f707', + 'balloon-heart': '\f708', + 'balloon': '\f709', + 'box2-fill': '\f70a', + 'box2-heart-fill': '\f70b', + 'box2-heart': '\f70c', + 'box2': '\f70d', + 'braces-asterisk': '\f70e', + 'calendar-heart-fill': '\f70f', + 'calendar-heart': '\f710', + 'calendar2-heart-fill': '\f711', + 'calendar2-heart': '\f712', + 'chat-heart-fill': '\f713', + 'chat-heart': '\f714', + 'chat-left-heart-fill': '\f715', + 'chat-left-heart': '\f716', + 'chat-right-heart-fill': '\f717', + 'chat-right-heart': '\f718', + 'chat-square-heart-fill': '\f719', + 'chat-square-heart': '\f71a', + 'clipboard-check-fill': '\f71b', + 'clipboard-data-fill': '\f71c', + 'clipboard-fill': '\f71d', + 'clipboard-heart-fill': '\f71e', + 'clipboard-heart': '\f71f', + 'clipboard-minus-fill': '\f720', + 'clipboard-plus-fill': '\f721', + 'clipboard-pulse': '\f722', + 'clipboard-x-fill': '\f723', + 'clipboard2-check-fill': '\f724', + 'clipboard2-check': '\f725', + 'clipboard2-data-fill': '\f726', + 'clipboard2-data': '\f727', + 'clipboard2-fill': '\f728', + 'clipboard2-heart-fill': '\f729', + 'clipboard2-heart': '\f72a', + 'clipboard2-minus-fill': '\f72b', + 'clipboard2-minus': '\f72c', + 'clipboard2-plus-fill': '\f72d', + 'clipboard2-plus': '\f72e', + 'clipboard2-pulse-fill': '\f72f', + 'clipboard2-pulse': '\f730', + 'clipboard2-x-fill': '\f731', + 'clipboard2-x': '\f732', + 'clipboard2': '\f733', + 'emoji-kiss-fill': '\f734', + 'emoji-kiss': '\f735', + 'envelope-heart-fill': '\f736', + 'envelope-heart': '\f737', + 'envelope-open-heart-fill': '\f738', + 'envelope-open-heart': '\f739', + 'envelope-paper-fill': '\f73a', + 'envelope-paper-heart-fill': '\f73b', + 'envelope-paper-heart': '\f73c', + 'envelope-paper': '\f73d', + 'filetype-aac': '\f73e', + 'filetype-ai': '\f73f', + 'filetype-bmp': '\f740', + 'filetype-cs': '\f741', + 'filetype-css': '\f742', + 'filetype-csv': '\f743', + 'filetype-doc': '\f744', + 'filetype-docx': '\f745', + 'filetype-exe': '\f746', + 'filetype-gif': '\f747', + 'filetype-heic': '\f748', + 'filetype-html': '\f749', + 'filetype-java': '\f74a', + 'filetype-jpg': '\f74b', + 'filetype-js': '\f74c', + 'filetype-jsx': '\f74d', + 'filetype-key': '\f74e', + 'filetype-m4p': '\f74f', + 'filetype-md': '\f750', + 'filetype-mdx': '\f751', + 'filetype-mov': '\f752', + 'filetype-mp3': '\f753', + 'filetype-mp4': '\f754', + 'filetype-otf': '\f755', + 'filetype-pdf': '\f756', + 'filetype-php': '\f757', + 'filetype-png': '\f758', + 'filetype-ppt': '\f75a', + 'filetype-psd': '\f75b', + 'filetype-py': '\f75c', + 'filetype-raw': '\f75d', + 'filetype-rb': '\f75e', + 'filetype-sass': '\f75f', + 'filetype-scss': '\f760', + 'filetype-sh': '\f761', + 'filetype-svg': '\f762', + 'filetype-tiff': '\f763', + 'filetype-tsx': '\f764', + 'filetype-ttf': '\f765', + 'filetype-txt': '\f766', + 'filetype-wav': '\f767', + 'filetype-woff': '\f768', + 'filetype-xls': '\f76a', + 'filetype-xml': '\f76b', + 'filetype-yml': '\f76c', + 'heart-arrow': '\f76d', + 'heart-pulse-fill': '\f76e', + 'heart-pulse': '\f76f', + 'heartbreak-fill': '\f770', + 'heartbreak': '\f771', + 'hearts': '\f772', + 'hospital-fill': '\f773', + 'hospital': '\f774', + 'house-heart-fill': '\f775', + 'house-heart': '\f776', + 'incognito': '\f777', + 'magnet-fill': '\f778', + 'magnet': '\f779', + 'person-heart': '\f77a', + 'person-hearts': '\f77b', + 'phone-flip': '\f77c', + 'plugin': '\f77d', + 'postage-fill': '\f77e', + 'postage-heart-fill': '\f77f', + 'postage-heart': '\f780', + 'postage': '\f781', + 'postcard-fill': '\f782', + 'postcard-heart-fill': '\f783', + 'postcard-heart': '\f784', + 'postcard': '\f785', + 'search-heart-fill': '\f786', + 'search-heart': '\f787', + 'sliders2-vertical': '\f788', + 'sliders2': '\f789', + 'trash3-fill': '\f78a', + 'trash3': '\f78b', + 'valentine': '\f78c', + 'valentine2': '\f78d', + 'wrench-adjustable-circle-fill': '\f78e', + 'wrench-adjustable-circle': '\f78f', + 'wrench-adjustable': '\f790', + 'filetype-json': '\f791', + 'filetype-pptx': '\f792', + 'filetype-xlsx': '\f793', + '1-circle-fill': '\f796', + '1-circle': '\f797', + '1-square-fill': '\f798', + '1-square': '\f799', + '2-circle-fill': '\f79c', + '2-circle': '\f79d', + '2-square-fill': '\f79e', + '2-square': '\f79f', + '3-circle-fill': '\f7a2', + '3-circle': '\f7a3', + '3-square-fill': '\f7a4', + '3-square': '\f7a5', + '4-circle-fill': '\f7a8', + '4-circle': '\f7a9', + '4-square-fill': '\f7aa', + '4-square': '\f7ab', + '5-circle-fill': '\f7ae', + '5-circle': '\f7af', + '5-square-fill': '\f7b0', + '5-square': '\f7b1', + '6-circle-fill': '\f7b4', + '6-circle': '\f7b5', + '6-square-fill': '\f7b6', + '6-square': '\f7b7', + '7-circle-fill': '\f7ba', + '7-circle': '\f7bb', + '7-square-fill': '\f7bc', + '7-square': '\f7bd', + '8-circle-fill': '\f7c0', + '8-circle': '\f7c1', + '8-square-fill': '\f7c2', + '8-square': '\f7c3', + '9-circle-fill': '\f7c6', + '9-circle': '\f7c7', + '9-square-fill': '\f7c8', + '9-square': '\f7c9', + 'airplane-engines-fill': '\f7ca', + 'airplane-engines': '\f7cb', + 'airplane-fill': '\f7cc', + 'airplane': '\f7cd', + 'alexa': '\f7ce', + 'alipay': '\f7cf', + 'android': '\f7d0', + 'android2': '\f7d1', + 'box-fill': '\f7d2', + 'box-seam-fill': '\f7d3', + 'browser-chrome': '\f7d4', + 'browser-edge': '\f7d5', + 'browser-firefox': '\f7d6', + 'browser-safari': '\f7d7', + 'c-circle-fill': '\f7da', + 'c-circle': '\f7db', + 'c-square-fill': '\f7dc', + 'c-square': '\f7dd', + 'capsule-pill': '\f7de', + 'capsule': '\f7df', + 'car-front-fill': '\f7e0', + 'car-front': '\f7e1', + 'cassette-fill': '\f7e2', + 'cassette': '\f7e3', + 'cc-circle-fill': '\f7e6', + 'cc-circle': '\f7e7', + 'cc-square-fill': '\f7e8', + 'cc-square': '\f7e9', + 'cup-hot-fill': '\f7ea', + 'cup-hot': '\f7eb', + 'currency-rupee': '\f7ec', + 'dropbox': '\f7ed', + 'escape': '\f7ee', + 'fast-forward-btn-fill': '\f7ef', + 'fast-forward-btn': '\f7f0', + 'fast-forward-circle-fill': '\f7f1', + 'fast-forward-circle': '\f7f2', + 'fast-forward-fill': '\f7f3', + 'fast-forward': '\f7f4', + 'filetype-sql': '\f7f5', + 'fire': '\f7f6', + 'google-play': '\f7f7', + 'h-circle-fill': '\f7fa', + 'h-circle': '\f7fb', + 'h-square-fill': '\f7fc', + 'h-square': '\f7fd', + 'indent': '\f7fe', + 'lungs-fill': '\f7ff', + 'lungs': '\f800', + 'microsoft-teams': '\f801', + 'p-circle-fill': '\f804', + 'p-circle': '\f805', + 'p-square-fill': '\f806', + 'p-square': '\f807', + 'pass-fill': '\f808', + 'pass': '\f809', + 'prescription': '\f80a', + 'prescription2': '\f80b', + 'r-circle-fill': '\f80e', + 'r-circle': '\f80f', + 'r-square-fill': '\f810', + 'r-square': '\f811', + 'repeat-1': '\f812', + 'repeat': '\f813', + 'rewind-btn-fill': '\f814', + 'rewind-btn': '\f815', + 'rewind-circle-fill': '\f816', + 'rewind-circle': '\f817', + 'rewind-fill': '\f818', + 'rewind': '\f819', + 'train-freight-front-fill': '\f81a', + 'train-freight-front': '\f81b', + 'train-front-fill': '\f81c', + 'train-front': '\f81d', + 'train-lightrail-front-fill': '\f81e', + 'train-lightrail-front': '\f81f', + 'truck-front-fill': '\f820', + 'truck-front': '\f821', + 'ubuntu': '\f822', + 'unindent': '\f823', + 'unity': '\f824', + 'universal-access-circle': '\f825', + 'universal-access': '\f826', + 'virus': '\f827', + 'virus2': '\f828', + 'wechat': '\f829', + 'yelp': '\f82a', + 'sign-stop-fill': '\f82b', + 'sign-stop-lights-fill': '\f82c', + 'sign-stop-lights': '\f82d', + 'sign-stop': '\f82e', + 'sign-turn-left-fill': '\f82f', + 'sign-turn-left': '\f830', + 'sign-turn-right-fill': '\f831', + 'sign-turn-right': '\f832', + 'sign-turn-slight-left-fill': '\f833', + 'sign-turn-slight-left': '\f834', + 'sign-turn-slight-right-fill': '\f835', + 'sign-turn-slight-right': '\f836', + 'sign-yield-fill': '\f837', + 'sign-yield': '\f838', + 'ev-station-fill': '\f839', + 'ev-station': '\f83a', + 'fuel-pump-diesel-fill': '\f83b', + 'fuel-pump-diesel': '\f83c', + 'fuel-pump-fill': '\f83d', + 'fuel-pump': '\f83e', + '0-circle-fill': '\f83f', + '0-circle': '\f840', + '0-square-fill': '\f841', + '0-square': '\f842', + 'rocket-fill': '\f843', + 'rocket-takeoff-fill': '\f844', + 'rocket-takeoff': '\f845', + 'rocket': '\f846', + 'stripe': '\f847', + 'subscript': '\f848', + 'superscript': '\f849', + 'trello': '\f84a', + 'envelope-at-fill': '\f84b', + 'envelope-at': '\f84c', + 'regex': '\f84d', + 'text-wrap': '\f84e', + 'sign-dead-end-fill': '\f84f', + 'sign-dead-end': '\f850', + 'sign-do-not-enter-fill': '\f851', + 'sign-do-not-enter': '\f852', + 'sign-intersection-fill': '\f853', + 'sign-intersection-side-fill': '\f854', + 'sign-intersection-side': '\f855', + 'sign-intersection-t-fill': '\f856', + 'sign-intersection-t': '\f857', + 'sign-intersection-y-fill': '\f858', + 'sign-intersection-y': '\f859', + 'sign-intersection': '\f85a', + 'sign-merge-left-fill': '\f85b', + 'sign-merge-left': '\f85c', + 'sign-merge-right-fill': '\f85d', + 'sign-merge-right': '\f85e', + 'sign-no-left-turn-fill': '\f85f', + 'sign-no-left-turn': '\f860', + 'sign-no-parking-fill': '\f861', + 'sign-no-parking': '\f862', + 'sign-no-right-turn-fill': '\f863', + 'sign-no-right-turn': '\f864', + 'sign-railroad-fill': '\f865', + 'sign-railroad': '\f866', + 'building-add': '\f867', + 'building-check': '\f868', + 'building-dash': '\f869', + 'building-down': '\f86a', + 'building-exclamation': '\f86b', + 'building-fill-add': '\f86c', + 'building-fill-check': '\f86d', + 'building-fill-dash': '\f86e', + 'building-fill-down': '\f86f', + 'building-fill-exclamation': '\f870', + 'building-fill-gear': '\f871', + 'building-fill-lock': '\f872', + 'building-fill-slash': '\f873', + 'building-fill-up': '\f874', + 'building-fill-x': '\f875', + 'building-fill': '\f876', + 'building-gear': '\f877', + 'building-lock': '\f878', + 'building-slash': '\f879', + 'building-up': '\f87a', + 'building-x': '\f87b', + 'buildings-fill': '\f87c', + 'buildings': '\f87d', + 'bus-front-fill': '\f87e', + 'bus-front': '\f87f', + 'ev-front-fill': '\f880', + 'ev-front': '\f881', + 'globe-americas': '\f882', + 'globe-asia-australia': '\f883', + 'globe-central-south-asia': '\f884', + 'globe-europe-africa': '\f885', + 'house-add-fill': '\f886', + 'house-add': '\f887', + 'house-check-fill': '\f888', + 'house-check': '\f889', + 'house-dash-fill': '\f88a', + 'house-dash': '\f88b', + 'house-down-fill': '\f88c', + 'house-down': '\f88d', + 'house-exclamation-fill': '\f88e', + 'house-exclamation': '\f88f', + 'house-gear-fill': '\f890', + 'house-gear': '\f891', + 'house-lock-fill': '\f892', + 'house-lock': '\f893', + 'house-slash-fill': '\f894', + 'house-slash': '\f895', + 'house-up-fill': '\f896', + 'house-up': '\f897', + 'house-x-fill': '\f898', + 'house-x': '\f899', + 'person-add': '\f89a', + 'person-down': '\f89b', + 'person-exclamation': '\f89c', + 'person-fill-add': '\f89d', + 'person-fill-check': '\f89e', + 'person-fill-dash': '\f89f', + 'person-fill-down': '\f8a0', + 'person-fill-exclamation': '\f8a1', + 'person-fill-gear': '\f8a2', + 'person-fill-lock': '\f8a3', + 'person-fill-slash': '\f8a4', + 'person-fill-up': '\f8a5', + 'person-fill-x': '\f8a6', + 'person-gear': '\f8a7', + 'person-lock': '\f8a8', + 'person-slash': '\f8a9', + 'person-up': '\f8aa', + 'scooter': '\f8ab', + 'taxi-front-fill': '\f8ac', + 'taxi-front': '\f8ad', + 'amd': '\f8ae', + 'database-add': '\f8af', + 'database-check': '\f8b0', + 'database-dash': '\f8b1', + 'database-down': '\f8b2', + 'database-exclamation': '\f8b3', + 'database-fill-add': '\f8b4', + 'database-fill-check': '\f8b5', + 'database-fill-dash': '\f8b6', + 'database-fill-down': '\f8b7', + 'database-fill-exclamation': '\f8b8', + 'database-fill-gear': '\f8b9', + 'database-fill-lock': '\f8ba', + 'database-fill-slash': '\f8bb', + 'database-fill-up': '\f8bc', + 'database-fill-x': '\f8bd', + 'database-fill': '\f8be', + 'database-gear': '\f8bf', + 'database-lock': '\f8c0', + 'database-slash': '\f8c1', + 'database-up': '\f8c2', + 'database-x': '\f8c3', + 'database': '\f8c4', + 'houses-fill': '\f8c5', + 'houses': '\f8c6', + 'nvidia': '\f8c7', + 'person-vcard-fill': '\f8c8', + 'person-vcard': '\f8c9', + 'sina-weibo': '\f8ca', + 'tencent-qq': '\f8cb', + 'wikipedia': '\f8cc', + 'alphabet-uppercase': '\f2a5', + 'alphabet': '\f68a', + 'amazon': '\f68d', + 'arrows-collapse-vertical': '\f690', + 'arrows-expand-vertical': '\f695', + 'arrows-vertical': '\f698', + 'arrows': '\f6a2', + 'ban-fill': '\f6a3', + 'ban': '\f6b6', + 'bing': '\f6c2', + 'cake': '\f6e0', + 'cake2': '\f6ed', + 'cookie': '\f6ee', + 'copy': '\f759', + 'crosshair': '\f769', + 'crosshair2': '\f794', + 'emoji-astonished-fill': '\f795', + 'emoji-astonished': '\f79a', + 'emoji-grimace-fill': '\f79b', + 'emoji-grimace': '\f7a0', + 'emoji-grin-fill': '\f7a1', + 'emoji-grin': '\f7a6', + 'emoji-surprise-fill': '\f7a7', + 'emoji-surprise': '\f7ac', + 'emoji-tear-fill': '\f7ad', + 'emoji-tear': '\f7b2', + 'envelope-arrow-down-fill': '\f7b3', + 'envelope-arrow-down': '\f7b8', + 'envelope-arrow-up-fill': '\f7b9', + 'envelope-arrow-up': '\f7be', + 'feather': '\f7bf', + 'feather2': '\f7c4', + 'floppy-fill': '\f7c5', + 'floppy': '\f7d8', + 'floppy2-fill': '\f7d9', + 'floppy2': '\f7e4', + 'gitlab': '\f7e5', + 'highlighter': '\f7f8', + 'marker-tip': '\f802', + 'nvme-fill': '\f803', + 'nvme': '\f80c', + 'opencollective': '\f80d', + 'pci-card-network': '\f8cd', + 'pci-card-sound': '\f8ce', + 'radar': '\f8cf', + 'send-arrow-down-fill': '\f8d0', + 'send-arrow-down': '\f8d1', + 'send-arrow-up-fill': '\f8d2', + 'send-arrow-up': '\f8d3', + 'sim-slash-fill': '\f8d4', + 'sim-slash': '\f8d5', + 'sourceforge': '\f8d6', + 'substack': '\f8d7', + 'threads-fill': '\f8d8', + 'threads': '\f8d9', + 'transparency': '\f8da', + 'twitter-x': '\f8db', + 'type-h4': '\f8dc', + 'type-h5': '\f8dd', + 'type-h6': '\f8de', + 'backpack-fill': '\f8df', + 'backpack': '\f8e0', + 'backpack2-fill': '\f8e1', + 'backpack2': '\f8e2', + 'backpack3-fill': '\f8e3', + 'backpack3': '\f8e4', + 'backpack4-fill': '\f8e5', + 'backpack4': '\f8e6', + 'brilliance': '\f8e7', + 'cake-fill': '\f8e8', + 'cake2-fill': '\f8e9', + 'duffle-fill': '\f8ea', + 'duffle': '\f8eb', + 'exposure': '\f8ec', + 'gender-neuter': '\f8ed', + 'highlights': '\f8ee', + 'luggage-fill': '\f8ef', + 'luggage': '\f8f0', + 'mailbox-flag': '\f8f1', + 'mailbox2-flag': '\f8f2', + 'noise-reduction': '\f8f3', + 'passport-fill': '\f8f4', + 'passport': '\f8f5', + 'person-arms-up': '\f8f6', + 'person-raised-hand': '\f8f7', + 'person-standing-dress': '\f8f8', + 'person-standing': '\f8f9', + 'person-walking': '\f8fa', + 'person-wheelchair': '\f8fb', + 'shadows': '\f8fc', + 'suitcase-fill': '\f8fd', + 'suitcase-lg-fill': '\f8fe', + 'suitcase-lg': '\f8ff', + 'suitcase': '\f900', + 'suitcase2-fill': '\f901', + 'suitcase2': '\f902', + 'vignette': '\f903', +); + +@each $icon, $codepoint in $bootstrap-icons-map { + .bi-#{$icon}::before { + content: $codepoint; + } +} diff --git a/src/assets/fonts/bootstrap-icons.woff b/src/assets/fonts/bootstrap-icons.woff new file mode 100644 index 00000000..51204d27 Binary files /dev/null and b/src/assets/fonts/bootstrap-icons.woff differ diff --git a/src/assets/fonts/bootstrap-icons.woff2 b/src/assets/fonts/bootstrap-icons.woff2 new file mode 100644 index 00000000..92c48302 Binary files /dev/null and b/src/assets/fonts/bootstrap-icons.woff2 differ diff --git a/src/assets/images/dns.svg b/src/assets/images/dns.svg deleted file mode 100644 index 45868828..00000000 --- a/src/assets/images/dns.svg +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - diff --git a/src/assets/images/zonemaster_logo_2021_color.png b/src/assets/logo.png similarity index 100% rename from src/assets/images/zonemaster_logo_2021_color.png rename to src/assets/logo.png diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 00000000..b1194269 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,13 @@ +import baseConfig from '../config.ts'; + +const config = baseConfig; + +export function setApiBaseUrl(url: string) { + config.apiBaseUrl = url; +} + +export function setPollingInterval(url: number) { + config.pollingInterval = url; +} + +export default config; diff --git a/src/content.config.ts b/src/content.config.ts new file mode 100644 index 00000000..97d28496 --- /dev/null +++ b/src/content.config.ts @@ -0,0 +1,18 @@ +import { defineCollection, z } from 'astro:content'; + +const faqCollection = defineCollection({ + type: 'content', + schema: z.object({ + question: z.string(), + category: z.string(), + }), +}); + +export type FaqItem = { + question: string; + answer: string; +}; + +export const collections = { + faq: faqCollection, +}; diff --git a/src/content/faq/da/difference.md b/src/content/faq/da/difference.md new file mode 100644 index 00000000..64909a45 --- /dev/null +++ b/src/content/faq/da/difference.md @@ -0,0 +1,10 @@ +--- +question: Hvad gør Zonemaster forskellig fra andre DNS-zonetestsoftware? +category: Generel information +--- + +* Zonemaster gemmer hele historien fra tidligere tests baseret på det testede domænenavn, hvilket betyder, at du kan gå tilbage til en test, du foretog for nogen tid siden, og sammenligne den med den test, du lige har kørt. +* Alle tests, som Zonemaster udfører, er defineret i Test Case Specification-dokumenterne, som kan findes i [Test Case Specification-dokumenterne](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). +* Zonemaster kan bruges til at teste [ikke-delegerede domænenavne](https://zonemaster.net/da/faq#what-is-an-undelegated-domain-test). +* Zonemaster kan bruges til at teste [DS-registreringer før deres offentliggørelse i forældrezonen](https://zonemaster.net/da/faq#can-i-test-the-ds-records-before-they-are-published). +* Denne open source-version af Zonemaster er bygget ved hjælp af modulær kode, hvilket betyder, at du kan integrere dele af den i dine egne systemer, hvis du ønsker det. For eksempel er det ret sjældent, at du vil have et komplet program, bare for at tjekke for omdelegeringer. diff --git a/src/content/faq/da/distinguish.md b/src/content/faq/da/distinguish.md new file mode 100644 index 00000000..c5fd741b --- /dev/null +++ b/src/content/faq/da/distinguish.md @@ -0,0 +1,12 @@ +--- +question: Hvordan kan Zonemaster skelne mellem hvad der er rigtigt og forkert? +category: Generel information +--- + +Zonemasters dom er primært baseret på DNS-standarderne, som er defineret i RFC'er. Den baserer også sin dom på DNS-bedste praksis, som kan være mere løst defineret. + +Alle Zonemaster-tests er defineret i [Test Case Specification-dokumenterne](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications), hvor henvisninger til standarddokumenterne for hvert testtilfælde findes. + +Beskrivelserne af meddelelsesniveauer som _MEDDELELSE_, _ADVARSEL_ og _FEJL_ findes i [Severity Level Definitions](https://github.com/zonemaster/zonemaster/blob/master/docs/public/specifications/tests/SeverityLevelDefinitions.md). + +Nogle gange er der forskellige fortolkninger af standarderne eller meninger om, hvad der er bedste praksis, og Zonemaster-holdet er altid åbent for input. Hvis du tror, at vi har gjort en fejl i vores dom, tøv ikke med at sende os en e-mail på [zonemaster-users@lists.iis.se](mailto:zonemaster-users@lists.iis.se) (modereret mailingliste) med et link til dit testresultat og en forklaring på, hvorfor du tror, at det viser noget, som du betragter som forkert. diff --git a/src/content/faq/da/dnssec.md b/src/content/faq/da/dnssec.md new file mode 100644 index 00000000..6016252c --- /dev/null +++ b/src/content/faq/da/dnssec.md @@ -0,0 +1,6 @@ +--- +question: Verifierer Zonemaster DNSSEC? +category: Brug af Zonemaster +--- + +Ja. Hvis DNSSEC er tilgængeligt for et domænenavn, der testes af Zonemaster, vil det blive tjekket automatisk. diff --git a/src/content/faq/da/ds-records.md b/src/content/faq/da/ds-records.md new file mode 100644 index 00000000..03e747ec --- /dev/null +++ b/src/content/faq/da/ds-records.md @@ -0,0 +1,6 @@ +--- +question: Kan jeg teste DS-registreringerne før de offentliggøres? +category: Brug af Zonemaster +--- + +Ja. Brug knappen "Vis indstillinger" og tilføj derefter Delegation Signer (DS)-registreringerne, der skal testes. Zonemaster vil derefter bruge dem på samme måde som om de allerede var tilføjet i forældrezonen. diff --git a/src/content/faq/da/errors.md b/src/content/faq/da/errors.md new file mode 100644 index 00000000..e8c5e2c6 --- /dev/null +++ b/src/content/faq/da/errors.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster returnerer "FEJL" eller "ADVARSEL" for mit domænenavn. Hvad betyder det? +category: Brug af Zonemaster +--- + +Det afhænger af, hvilken test mislykkedes for dit domænenavn. Hver test ledsages af en eller flere meddelelser, der beskriver de fundne problemer. + +Du kan også få yderligere indsigt om hver test fra [Test Case Specification-dokumenterne](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). diff --git a/src/content/faq/da/how-can-zonemaster-help.md b/src/content/faq/da/how-can-zonemaster-help.md new file mode 100644 index 00000000..2e8007d6 --- /dev/null +++ b/src/content/faq/da/how-can-zonemaster-help.md @@ -0,0 +1,11 @@ +--- +question: Hvordan kan Zonemaster hjælpe mig? +category: Generel information +--- + +Værktøjet Zonemaster kan hjælpe forskellige typer brugere: + +* DNS-administratorer, eksperter og begyndere, som vil tjekke deres DNS-konfiguration; +* brugere, som vil vide, om det domænenavn, de ejer eller bruger, har problemer eller ej. + +Brugere i den anden kategori bør kontakte deres DNS-operatør, hvis der er fejl eller advarsler for nogen af testene af deres domænenavn. diff --git a/src/content/faq/da/ipv6.md b/src/content/faq/da/ipv6.md new file mode 100644 index 00000000..23257fe6 --- /dev/null +++ b/src/content/faq/da/ipv6.md @@ -0,0 +1,6 @@ +--- +question: Understøtter Zonemaster IPv6? +category: Brug af Zonemaster +--- + +Ja. Som standard vil Zonemaster forespørge navneservere både over IPv4 og IPv6, medmindre det er eksplicit konfigureret anderledes. En sådan konfiguration er tilgængelig gennem knappen "Vis indstillinger". diff --git a/src/content/faq/da/not-tested.md b/src/content/faq/da/not-tested.md new file mode 100644 index 00000000..d104733d --- /dev/null +++ b/src/content/faq/da/not-tested.md @@ -0,0 +1,12 @@ +--- +question: Hvorfor kan mit domænenavn ikke testes? +category: Brug af Zonemaster +--- + +Der er flere muligheder. + +* Dit domænenavn er endnu ikke delegeret. +* Dit domænenavn er ikke tilgængeligt fra det offentlige internet. +* Zonemaster kan kun teste, hvad der kaldes en DNS-zone, for eksempel 'zonemaster.net', og ikke værtsnavne, som 'www.zonemaster.net'. +* Der er en 10 minutters beskyttelse mellem på hinanden følgende tests for et givet domænenavn, med samme testparametre. At køre en test inden for dette vindue vil i stedet vise den seneste tilgængelige test for det domænenavn og parametre. +* Du har stavet dit domænenavn forkert. diff --git a/src/content/faq/da/privacy.md b/src/content/faq/da/privacy.md new file mode 100644 index 00000000..5f17e63a --- /dev/null +++ b/src/content/faq/da/privacy.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster og privatliv +category: Generel information +--- + +Intet andet end det testede domæne, andre testparametre og resultatet bliver gemt i databasen. Specifikt gemmer vi ikke nogen information, der kunne knytte en test til brugeren, der initierede den. + +Dog, da [zonemaster.net](https://zonemaster.net), ligesom andre offentlige instanser, er åben for alle, er det muligt for enhver at teste dit domæne og se dets testhistorie. diff --git a/src/content/faq/da/queries.md b/src/content/faq/da/queries.md new file mode 100644 index 00000000..e5b28592 --- /dev/null +++ b/src/content/faq/da/queries.md @@ -0,0 +1,10 @@ +--- +question: Hvilken type DNS-forespørgsler genererer Zonemaster? +category: Generel information +--- + +Zonemaster sender flere DNS-forespørgsler til navneserverne, der værter det domænenavn, der testes, og også til navneserverne, der værter forældrezonen for det domænenavn. + +Webgrænsefladen for Zonemaster viser ikke de forespørgsler, der blev sendt, kun CLI-grænsefladen gør det. Hvis du vil se sådanne forespørgsler, skal du installere en lokalt fungerende Zonemaster-instans med både Engine- og CLI-komponenterne. Se [CLI-installationsdokumentet](https://github.com/zonemaster/zonemaster/blob/master/docs/public/installation/zonemaster-cli.md) for mere information, eller hvis du foretrækker et [Docker-billede](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md#Invoking-the-command-line-tool-using-Docker) er også tilgængeligt. + +De sendte forespørgsler kan vises ved hjælp af 'DEBUG'-niveauindstillingen. Advarsel, uddata fra CLI kan være ret omfattende. For mere information, se [CLI-brugsdokumentation](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md). diff --git a/src/content/faq/da/reverse-zone.md b/src/content/faq/da/reverse-zone.md new file mode 100644 index 00000000..e3a9edd8 --- /dev/null +++ b/src/content/faq/da/reverse-zone.md @@ -0,0 +1,11 @@ +--- +question: Hvordan kan jeg teste en "omvendt" zone med Zonemaster? +category: Brug af Zonemaster +--- + +For at tjekke en omvendt zone med Zonemaster, skal man først vide, hvad den omvendte zone er, og indtaste den i det format, den har i DNS. En omvendt zone opnås ved at vende en IP-adresse og tilføje et suffiks. IPv4-adresser bruger suffikset "in-addr.arpa", mens IPv6-adresser bruger "ip6.arpa". + +Eksempler: + +* for IPv4-præfiks "198.51.100.0/24": 100.51.198.in-addr.arpa +* for IPv6-præfiks "2001:db8::/32": 8.b.d.0.1.0.0.2.ip6.arpa diff --git a/src/content/faq/da/severity-levels.md b/src/content/faq/da/severity-levels.md new file mode 100644 index 00000000..0055e4fa --- /dev/null +++ b/src/content/faq/da/severity-levels.md @@ -0,0 +1,19 @@ +--- +question: Hvad betyder sværhedsgradene? +category: Brug af Zonemaster +--- + +Info +: Meddelelsen er noget, der måske er af interesse for zonens administrator, men som bestemt ikke indikerer et problem. + +Meddelelse +: Meddelelsen betyder noget, som zonens administrator bør vide, men som ikke nødvendigvis er et problem. + +Advarsel +: Meddelelsen betyder noget, der under visse omstændigheder vil være et problem, men som sandsynligvis ikke vil blive bemærket af en tilfældig bruger. + +Fejl +: Meddelelsen betyder et problem, der meget sandsynligt (eller måske sikkert) vil påvirke funktionen af den zone, der testes, negativt, men ikke så alvorligt, at hele zonen bliver uopløselig. + +Kritisk +: Meddelelsen betyder en meget alvorlig fejl. diff --git a/src/content/faq/da/test-case-identifiers.md b/src/content/faq/da/test-case-identifiers.md new file mode 100644 index 00000000..7f475005 --- /dev/null +++ b/src/content/faq/da/test-case-identifiers.md @@ -0,0 +1,31 @@ +--- +question: Hvad er testtilfældeidentifikatorer? +category: Brug af Zonemaster +--- + +Alle testtilfælde tilhører et specifikt testniveau, og deres navne er baseret på navnet på dette testniveau. Følgende testniveauer er defineret og tilgængelige: + +- Address +- Basic +- Connectivity +- Consistency +- DNSSEC +- Delegation +- Nameserver +- Syntax +- Zone + +Navnet på testniveauet er ikke skriftstørrelsesfølsomt, men de former, der er defineret ovenfor, skal bruges, når der henvises til testniveauerne, dvs. kun den første bogstav er stort, undtagen akronymer, hvor alle bogstaver er store. For eksempel "Address" og hverken "ADDRESS" eller "address". + +Testtilfældeidentifikatoren i testtilfældespecifikationen (både i hovedoverskriften og i afsnittet "Testtilfældeidentifikator") bruger navnet på testniveauet, som defineret ovenfor, og har formatet: `{Testniveau navn} + {Indeks}` + +Når der henvises til et testtilfælde, skal bogstavstørrelsen, der er defineret ovenfor, bruges til navnet på testniveauet for læsbarhed. + +`{Indeks}` er et to-cifret suffiks 01-99, og skal vælges, så testtilfældeidentifikatoren er unik. Normalt vælges det første ledige indeks. + +Eksempler på testtilfældeidentifikatorer: + +- Address03 +- Basic04 +- DNSSEC15 +- Zone06 diff --git a/src/content/faq/da/undelegated.md b/src/content/faq/da/undelegated.md new file mode 100644 index 00000000..aa2336f7 --- /dev/null +++ b/src/content/faq/da/undelegated.md @@ -0,0 +1,10 @@ +--- +question: Hvad er en ikke-delegeret domænetest? +category: Brug af Zonemaster +--- + +En ikke-delegeret domænetest er en test, der udføres på et domænenavn, der måske er, eller måske ikke er, fuldt offentliggjort i DNS. + +Dette kan være meget nyttigt, hvis man skal migrere sit domæne fra en registrator til en anden, for eksempel migrere zonen 'example.com' fra navneserveren 'ns.example.com' til navneserveren 'ns.example.org'. I dette scenarie kan man udføre en ikke-delegeret domænetest, der leverer zonen ('example.com') og navneserveren, man migrerer til ('ns.example.org'), før man migrerer sit domæne. + +Når testresultaterne ikke viser nogen fejl eller advarsler, kan man være ret sikker på, at domænets nye placering fungerer godt. Der kan dog stadig være andre problemer i zonedataene selv, som denne test ikke er opmærksom på. diff --git a/src/content/faq/da/what-is-zonemaster.md b/src/content/faq/da/what-is-zonemaster.md new file mode 100644 index 00000000..d5b2c50d --- /dev/null +++ b/src/content/faq/da/what-is-zonemaster.md @@ -0,0 +1,17 @@ +--- +question: Hvad er Zonemaster? +category: Generel information +--- + +Zonemaster er et softwarepakke, der validerer kvaliteten af en DNS-delegering. + +Ambitionen bag Zonemaster-projektet er at udvikle og vedligeholde et open source DNS-validationsværktøj, der tilbyder forbedret ydeevne i forhold til eksisterende værktøjer og leverer omfattende dokumentation, der kan genbruges af lignende projekter i fremtiden. + +Zonemaster består af flere moduler eller komponenter: + +- Engine, et testrammeværk, der understøtter al funktionalitet til udførelse af DNS-tests; +- CLI, en kommandolinjegrænseflade til Engine; +- Backend, en server, der gør det muligt at køre Zonemaster-tests og gemme resultater ved hjælp af en JSON-RPC-API og en database; +- GUI, en webgrænseflade til Backend. + +Komponenterne vil hjælpe forskellige typer brugere med at tjekke et domænes navneservere for konfigurationfejl og generere en rapport, der vil hjælpe med at rette fejlene. diff --git a/src/content/faq/da/who-is-behind-zonemaster.md b/src/content/faq/da/who-is-behind-zonemaster.md new file mode 100644 index 00000000..4e96dfea --- /dev/null +++ b/src/content/faq/da/who-is-behind-zonemaster.md @@ -0,0 +1,6 @@ +--- +question: Hvem står bag Zonemaster? +category: Generel information +--- + +Zonemaster er et fælles projekt mellem [AFNIC](https://www.afnic.fr/en/), registret for ".fr" TLD og flere andre TLD'er som ".re", ".pm", ".tf", ".wf", ".yt" og ".paris", og [The Swedish Internet Foundation](https://internetstiftelsen.se/en/), registret for ".se" og ".nu" TLD'er. diff --git a/src/content/faq/en/difference.md b/src/content/faq/en/difference.md new file mode 100644 index 00000000..b5201f20 --- /dev/null +++ b/src/content/faq/en/difference.md @@ -0,0 +1,11 @@ +--- +question: What makes Zonemaster different from other DNS zone validating software? +category: General information +--- + +* Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. +* All tests that Zonemaster runs are defined in the Test Case Specification documents that can be found in the [Test Case Specification documents](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). +* Zonemaster can be used to test [undelegated domain names](https://zonemaster.net/en/faq#what-is-an-undelegated-domain-test). +* Zonemaster can be used to test [DS records before their publication in the parent zone](https://zonemaster.net/en/faq#can-i-test-the-ds-records-before-they-are-published). +* This open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. + diff --git a/src/content/faq/en/distinguish.md b/src/content/faq/en/distinguish.md new file mode 100644 index 00000000..69069d0a --- /dev/null +++ b/src/content/faq/en/distinguish.md @@ -0,0 +1,12 @@ +--- +question: How can Zonemaster distinguish between what is right and wrong? +category: General information +--- + +The judgement of Zonemaster is primarily based on the DNS standards as defined in RFCs. It also bases its judgement on DNS best practices, which can be more loosely defined. + +All Zonemaster tests are defined in the [Test Case Specification documents](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications) in which the references to the standard documents for each test case are found. + +The descriptions of message levels such as _NOTICE_, _WARNING_ and _ERROR_ are found in [Severity Level Definitions](https://github.com/zonemaster/zonemaster/blob/master/docs/public/specifications/tests/SeverityLevelDefinitions.md). + +Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at [zonemaster-users@lists.iis.se](mailto:zonemaster-users@lists.iis.se) (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. diff --git a/src/content/faq/en/dnssec.md b/src/content/faq/en/dnssec.md new file mode 100644 index 00000000..4cee5911 --- /dev/null +++ b/src/content/faq/en/dnssec.md @@ -0,0 +1,6 @@ +--- +question: Does Zonemaster verify DNSSEC? +category: Using Zonemaster +--- + +Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. diff --git a/src/content/faq/en/ds-records.md b/src/content/faq/en/ds-records.md new file mode 100644 index 00000000..9f03c4ae --- /dev/null +++ b/src/content/faq/en/ds-records.md @@ -0,0 +1,6 @@ +--- +question: Can I test the DS records before they are published? +category: Using Zonemaster +--- + +Yes. Use the "Show options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. diff --git a/src/content/faq/en/errors.md b/src/content/faq/en/errors.md new file mode 100644 index 00000000..38f1a872 --- /dev/null +++ b/src/content/faq/en/errors.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? +category: Using Zonemaster +--- + +It depends on which test failed for your domain name. Each test is accompanied with one or several messages describing the issues found. + +You can also get further insight about each test from the [Test Case Specification documents]( https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). diff --git a/src/content/faq/en/how-can-zonemaster-help.md b/src/content/faq/en/how-can-zonemaster-help.md new file mode 100644 index 00000000..156e4843 --- /dev/null +++ b/src/content/faq/en/how-can-zonemaster-help.md @@ -0,0 +1,11 @@ +--- +question: How can Zonemaster help me? +category: General information +--- + +The Zonemaster tool could help different kind of users: + +* DNS administrators, experts and beginners alike, who want to check their DNS configuration; +* users who want to know whether the domain name they own or use have any issues or not. + +Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. diff --git a/src/content/faq/en/ipv6.md b/src/content/faq/en/ipv6.md new file mode 100644 index 00000000..5a7c0610 --- /dev/null +++ b/src/content/faq/en/ipv6.md @@ -0,0 +1,6 @@ +--- +question: Does Zonemaster support IPv6? +category: Using Zonemaster +--- + +Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Show options" button. diff --git a/src/content/faq/en/not-tested.md b/src/content/faq/en/not-tested.md new file mode 100644 index 00000000..b7210ffe --- /dev/null +++ b/src/content/faq/en/not-tested.md @@ -0,0 +1,12 @@ +--- +question: How come my domain name cannot be tested? +category: Using Zonemaster +--- + +There are several possibilities. + +* Your domain name is not yet delegated. +* Your domain name is not reachable from public Internet. +* Zonemaster can only test what is called a DNS zone, for example 'zonemaster.net', and not host names, like 'www.zonemaster.net'. +* There is a 10 minutes protection between consecutive tests for a given domain name, with same test parameters. Running a test within that window will instead show the last available test for that domain name, and parameters. +* You have misspelled your domain name. diff --git a/src/content/faq/en/privacy.md b/src/content/faq/en/privacy.md new file mode 100644 index 00000000..e50f61bb --- /dev/null +++ b/src/content/faq/en/privacy.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster and privacy +category: General information +--- + +Nothing besides the test domain, other test parameters and the result is stored in the database. Specifically we do not store any information that could link a test to the user who initiated it. + +However, since [zonemaster.net](https://zonemaster.net), like other public instances, is open to everyone, it is possible for anyone to test your domain and view its history of tests diff --git a/src/content/faq/en/queries.md b/src/content/faq/en/queries.md new file mode 100644 index 00000000..89aa651d --- /dev/null +++ b/src/content/faq/en/queries.md @@ -0,0 +1,10 @@ +--- +question: What kind of DNS queries does Zonemaster generate? +category: General information +--- + +Zonemaster sends multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. + +The web interface of Zonemaster does not show the queries that were sent, only the CLI interface can. If you want to see such queries, you will have to locally install a minimally working Zonemaster instance with both the Engine and CLI components. See the [CLI installation document](https://github.com/zonemaster/zonemaster/blob/master/docs/public/installation/zonemaster-cli.md) for more information, or if you prefer a [Docker image](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md#Invoking-the-command-line-tool-using-Docker) is also available. + +Queries sent can be shown using the 'DEBUG' level option. Fair warning, the output from the CLI can be quite heavy. For more information see [CLI usage documentation](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md). diff --git a/src/content/faq/en/reverse-zone.md b/src/content/faq/en/reverse-zone.md new file mode 100644 index 00000000..daba25f9 --- /dev/null +++ b/src/content/faq/en/reverse-zone.md @@ -0,0 +1,11 @@ +--- +question: How can I test a "reverse" zone with Zonemaster? +category: Using Zonemaster +--- + +To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". + +Examples: + +* for IPv4 prefix "198.51.100.0/24": 100.51.198.in-addr.arpa +* for IPv6 prefix "2001:db8::/32": 8.b.d.0.1.0.0.2.ip6.arpa diff --git a/src/content/faq/en/severity-levels.md b/src/content/faq/en/severity-levels.md new file mode 100644 index 00000000..342a2835 --- /dev/null +++ b/src/content/faq/en/severity-levels.md @@ -0,0 +1,20 @@ +--- +question: What is the meaning of the severity levels? +category: Using Zonemaster +--- + +Info +: The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. + +Notice + +: The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. + +Warning +: The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. + +Error +: The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. + +Critical +: The message means a very serious error. diff --git a/src/content/faq/en/test-case-identifiers.md b/src/content/faq/en/test-case-identifiers.md new file mode 100644 index 00000000..09117918 --- /dev/null +++ b/src/content/faq/en/test-case-identifiers.md @@ -0,0 +1,39 @@ +--- +question: What are Test Case Identifiers? +category: Using Zonemaster +--- + +All test cases belong to one specific test level and their names are based on +that test level’s name. The following test levels are defined and available: + +- Address +- Basic +- Connectivity +- Consistency +- DNSSEC +- Delegation +- Nameserver +- Syntax +- Zone + +The test level name is not case-sensitive, but the forms defined above +must be used when referring to the test levels, i.e. only the first letter +uppercase, expect for acronyms for which all uppercase is used. +For example "Address" and neither "ADDRESS" nor "address". + +The test case identifier in the test case specification (both in the main +headline and in the "Test case identifier" section) uses the test level name, +as defined above, and has the format: `{Test level name} + {Index}` + +When referencing to a test case, for readability, the letter case defined +above must be used for the test level name. + +The `{Index}` is a two-digit suffix 01-99, and should be selected so that the +test case identifier is unique. Normally the first free index is selected. + +Example of test case identifiers: + +- Address03 +- Basic04 +- DNSSEC15 +- Zone06 diff --git a/src/content/faq/en/undelegated.md b/src/content/faq/en/undelegated.md new file mode 100644 index 00000000..6d06b9b6 --- /dev/null +++ b/src/content/faq/en/undelegated.md @@ -0,0 +1,10 @@ +--- +question: What is an undelegated domain test? +category: Using Zonemaster +--- + +An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. + +This can be quite useful if one is going to migrate one's domain from one registrar to another, for example, migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. + +When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. diff --git a/src/content/faq/en/what-is-zonemaster.md b/src/content/faq/en/what-is-zonemaster.md new file mode 100644 index 00000000..a935df50 --- /dev/null +++ b/src/content/faq/en/what-is-zonemaster.md @@ -0,0 +1,17 @@ +--- +question: What is Zonemaster? +category: General information +--- + +Zonemaster is a software package that validates the quality of a DNS delegation. + +The ambition of the Zonemaster project is to develop and maintain an open source DNS validation tool, offering improved performance over existing tools and providing extensive documentation which could be re-used by similar projects in the future. + +Zonemaster consists of several modules or components: + +- Engine, a test framework that supports all functionality to perform DNS tests; +- CLI, a command-line interface to the Engine; +- Backend, a server that allows you to run Zonemaster tests and save results using a JSON-RPC API and a database; +- GUI, a web interface to the Backend. + +The components will help different types of users to check a domain's name servers for configuration errors and generate a report that will assist in fixing the errors. diff --git a/src/content/faq/en/who-is-behind-zonemaster.md b/src/content/faq/en/who-is-behind-zonemaster.md new file mode 100644 index 00000000..22b3b3d6 --- /dev/null +++ b/src/content/faq/en/who-is-behind-zonemaster.md @@ -0,0 +1,6 @@ +--- +question: Who is behind Zonemaster? +category: General information +--- + +Zonemaster is a joint project between [AFNIC](https://www.afnic.fr/en/), the registry of ".fr" TLD and several other TLDs like ".re", ".pm", ".tf", ".wf", ".yt" and ".paris", and [The Swedish Internet Foundation](https://internetstiftelsen.se/en/), the registry of ".se" and ".nu" TLDs. diff --git a/src/content/faq/es/difference.md b/src/content/faq/es/difference.md new file mode 100644 index 00000000..6308fa5c --- /dev/null +++ b/src/content/faq/es/difference.md @@ -0,0 +1,10 @@ +--- +question: ¿Qué hace que Zonemaster sea diferente de otros software de validación de zonas DNS? +category: Información general +--- + +* Zonemaster guarda todo el historial de las pruebas anteriores basadas en el nombre de dominio probado, lo que significa que puede volver a una prueba que realizó hace algún tiempo y compararla con la prueba que acaba de realizar. +* Todas las pruebas que ejecuta Zonemaster están definidas en los documentos de Especificación de Casos de Prueba que se pueden encontrar en los [documentos de Especificación de Casos de Prueba](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). +* Zonemaster se puede utilizar para probar [nombres de dominio no delegados](https://zonemaster.net/es/faq#what-is-an-undelegated-domain-test). +* Zonemaster se puede utilizar para probar [registros DS antes de su publicación en la zona padre](https://zonemaster.net/es/faq#can-i-test-the-ds-records-before-they-are-published). +* Esta versión de código abierto de Zonemaster se construyó utilizando código modular, lo que básicamente significa que puede integrar partes de él en sus propios sistemas, si lo desea. Por ejemplo, es bastante raro que desee un programa completo solo para verificar las redelegaciones. diff --git a/src/content/faq/es/distinguish.md b/src/content/faq/es/distinguish.md new file mode 100644 index 00000000..d7fe5764 --- /dev/null +++ b/src/content/faq/es/distinguish.md @@ -0,0 +1,12 @@ +--- +question: ¿Cómo puede Zonemaster distinguir entre lo correcto y lo incorrecto? +category: Información general +--- + +El juicio de Zonemaster se basa principalmente en los estándares DNS definidos en los RFC. También basa su juicio en las mejores prácticas DNS, que pueden estar definidas de manera más flexible. + +Todas las pruebas de Zonemaster están definidas en los [documentos de Especificación de Casos de Prueba](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications) en los que se encuentran las referencias a los documentos estándar para cada caso de prueba. + +Las descripciones de los niveles de mensaje como _AVISO_, _ADVERTENCIA_ y _ERROR_ se encuentran en [Definiciones de Niveles de Gravedad](https://github.com/zonemaster/zonemaster/blob/master/docs/public/specifications/tests/SeverityLevelDefinitions.md). + +A veces hay diferentes interpretaciones de los estándares o opiniones sobre cuáles son las mejores prácticas, y el equipo de Zonemaster siempre está abierto a recibir aportes. Si cree que hemos cometido un error en nuestro juicio, no dude en enviarnos un correo electrónico a [zonemaster-users@lists.iis.se](mailto:zonemaster-users@lists.iis.se) (lista de correo moderada) con un enlace a su resultado de prueba y una explicación de por qué cree que muestra algo que considera incorrecto. diff --git a/src/content/faq/es/dnssec.md b/src/content/faq/es/dnssec.md new file mode 100644 index 00000000..e00e8640 --- /dev/null +++ b/src/content/faq/es/dnssec.md @@ -0,0 +1,6 @@ +--- +question: ¿Zonemaster verifica DNSSEC? +category: Usando Zonemaster +--- + +Sí. Si DNSSEC está disponible para un nombre de dominio que es probado por Zonemaster, se verificará automáticamente. diff --git a/src/content/faq/es/ds-records.md b/src/content/faq/es/ds-records.md new file mode 100644 index 00000000..a4669dd7 --- /dev/null +++ b/src/content/faq/es/ds-records.md @@ -0,0 +1,6 @@ +--- +question: ¿Puedo probar los registros DS antes de que se publiquen? +category: Usando Zonemaster +--- + +Sí. Utilice el botón "Mostrar opciones" y allí agregue los registros de Firmador de Delegación (DS) a probar. Zonemaster los utilizará de la misma manera que si ya hubieran sido agregados en la zona padre. diff --git a/src/content/faq/es/errors.md b/src/content/faq/es/errors.md new file mode 100644 index 00000000..4dcb2b6c --- /dev/null +++ b/src/content/faq/es/errors.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster devuelve "Error" o "Advertencia" para mi nombre de dominio. ¿Qué significa? +category: Usando Zonemaster +--- + +Depende de qué prueba falló para su nombre de dominio. Cada prueba viene acompañada de uno o varios mensajes que describen los problemas encontrados. + +También puede obtener más información sobre cada prueba en los [documentos de Especificación de Casos de Prueba](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). diff --git a/src/content/faq/es/how-can-zonemaster-help.md b/src/content/faq/es/how-can-zonemaster-help.md new file mode 100644 index 00000000..bfaa5e2e --- /dev/null +++ b/src/content/faq/es/how-can-zonemaster-help.md @@ -0,0 +1,11 @@ +--- +question: ¿Cómo puede ayudarme Zonemaster? +category: Información general +--- + +La herramienta Zonemaster puede ayudar a diferentes tipos de usuarios: + +* Administradores, expertos y principiantes en DNS que deseen verificar su configuración DNS; +* usuarios que deseen saber si el nombre de dominio que poseen o utilizan tiene algún problema. + +Los usuarios de la segunda categoría deben contactar a su operador DNS en caso de que haya errores o advertencias para cualquier prueba de su nombre de dominio. diff --git a/src/content/faq/es/ipv6.md b/src/content/faq/es/ipv6.md new file mode 100644 index 00000000..22b73174 --- /dev/null +++ b/src/content/faq/es/ipv6.md @@ -0,0 +1,6 @@ +--- +question: ¿Zonemaster soporta IPv6? +category: Usando Zonemaster +--- + +Sí. Por defecto, Zonemaster consultará a los servidores de nombres tanto a través de IPv4 como de IPv6, a menos que se configure explícitamente de otra manera. Esta configuración es accesible a través del botón "Mostrar opciones". diff --git a/src/content/faq/es/not-tested.md b/src/content/faq/es/not-tested.md new file mode 100644 index 00000000..6e04aca0 --- /dev/null +++ b/src/content/faq/es/not-tested.md @@ -0,0 +1,12 @@ +--- +question: ¿Cómo es que mi nombre de dominio no puede ser probado? +category: Usando Zonemaster +--- + +Hay varias posibilidades. + +* Su nombre de dominio aún no está delegado. +* Su nombre de dominio no es alcanzable desde Internet público. +* Zonemaster solo puede probar lo que se llama una zona DNS, por ejemplo 'zonemaster.net', y no nombres de host, como 'www.zonemaster.net'. +* Existe una protección de 10 minutos entre pruebas consecutivas para un nombre de dominio dado, con los mismos parámetros de prueba. Ejecutar una prueba dentro de esa ventana mostrará en su lugar la última prueba disponible para ese nombre de dominio y parámetros. +* Ha escrito mal su nombre de dominio. diff --git a/src/content/faq/es/privacy.md b/src/content/faq/es/privacy.md new file mode 100644 index 00000000..c010f295 --- /dev/null +++ b/src/content/faq/es/privacy.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster y privacidad +category: Información general +--- + +Nada más que el dominio de prueba, otros parámetros de prueba y el resultado se almacena en la base de datos. Específicamente, no almacenamos ninguna información que pueda vincular una prueba con el usuario que la inició. + +Sin embargo, dado que [zonemaster.net](https://zonemaster.net), al igual que otras instancias públicas, está abierto a todos, es posible que cualquier persona pruebe su dominio y vea su historial de pruebas. diff --git a/src/content/faq/es/queries.md b/src/content/faq/es/queries.md new file mode 100644 index 00000000..46b55e30 --- /dev/null +++ b/src/content/faq/es/queries.md @@ -0,0 +1,10 @@ +--- +question: ¿Qué tipo de consultas DNS genera Zonemaster? +category: Información general +--- + +Zonemaster envía múltiples consultas DNS a los servidores de nombres que alojan el nombre de dominio que se está probando y también a los servidores de nombres que alojan la zona padre de ese nombre de dominio. + +La interfaz web de Zonemaster no muestra las consultas que se enviaron, solo la interfaz de línea de comandos (CLI) puede hacerlo. Si desea ver dichas consultas, deberá instalar localmente una instancia de Zonemaster mínimamente funcional con ambos componentes, el Motor y la CLI. Consulte el [documento de instalación de la CLI](https://github.com/zonemaster/zonemaster/blob/master/docs/public/installation/zonemaster-cli.md) para obtener más información, o si prefiere, también está disponible una [imagen de Docker](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md#Invoking-the-command-line-tool-using-Docker). + +Las consultas enviadas se pueden mostrar utilizando la opción de nivel 'DEPURACIÓN'. Advertencia justa, la salida de la CLI puede ser bastante pesada. Para más información, consulte la [documentación de uso de la CLI](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md). diff --git a/src/content/faq/es/reverse-zone.md b/src/content/faq/es/reverse-zone.md new file mode 100644 index 00000000..dc331dfd --- /dev/null +++ b/src/content/faq/es/reverse-zone.md @@ -0,0 +1,11 @@ +--- +question: ¿Cómo puedo probar una zona "inversa" con Zonemaster? +category: Usando Zonemaster +--- + +Para verificar una zona inversa con Zonemaster, primero se necesita saber cuál es la zona inversa y escribirla en el formato que tiene en el DNS. Una zona inversa se obtiene invirtiendo una dirección IP y añadiendo un sufijo. Las direcciones IPv4 utilizan el sufijo "in-addr.arpa" mientras que las direcciones IPv6 utilizan "ip6.arpa". + +Ejemplos: + +* para el prefijo IPv4 "198.51.100.0/24": 100.51.198.in-addr.arpa +* para el prefijo IPv6 "2001:db8::/32": 8.b.d.0.1.0.0.2.ip6.arpa diff --git a/src/content/faq/es/severity-levels.md b/src/content/faq/es/severity-levels.md new file mode 100644 index 00000000..895fafae --- /dev/null +++ b/src/content/faq/es/severity-levels.md @@ -0,0 +1,19 @@ +--- +question: ¿Cuál es el significado de los niveles de gravedad? +category: Usando Zonemaster +--- + +Info +: El mensaje es algo que puede ser de interés para el administrador de la zona, pero que definitivamente no indica un problema. + +Aviso +: El mensaje significa algo que debe ser conocido por el administrador de la zona, pero que no necesariamente es un problema. + +Advertencia +: El mensaje significa algo que en algunas circunstancias será un problema, pero que es poco probable que sea notado por un usuario casual. + +Error +: El mensaje significa un problema que probablemente (o posiblemente con certeza) afectará negativamente el funcionamiento de la zona que se está probando, pero no es tan grave como para que toda la zona se vuelva irresoluble. + +Crítico +: El mensaje significa un error muy grave. diff --git a/src/content/faq/es/test-case-identifiers.md b/src/content/faq/es/test-case-identifiers.md new file mode 100644 index 00000000..ea1c64d1 --- /dev/null +++ b/src/content/faq/es/test-case-identifiers.md @@ -0,0 +1,31 @@ +--- +question: ¿Qué son los Identificadores de Casos de Prueba? +category: Usando Zonemaster +--- + +Todos los casos de prueba pertenecen a un nivel de prueba específico y sus nombres se basan en el nombre de ese nivel de prueba. Los siguientes niveles de prueba están definidos y disponibles: + +- Address +- Basic +- Connectivity +- Consistency +- DNSSEC +- Delegation +- Nameserver +- Syntax +- Zone + +El nombre del nivel de prueba no es sensible a mayúsculas y minúsculas, pero las formas definidas anteriormente deben usarse al referirse a los niveles de prueba, es decir, solo la primera letra en mayúscula, excepto para acrónimos en los que se usa todo en mayúscula. Por ejemplo, "Address" y ni "ADDRESS" ni "address". + +El identificador del caso de prueba en la especificación del caso de prueba (tanto en el título principal como en la sección "Identificador del caso de prueba") utiliza el nombre del nivel de prueba, como se define anteriormente, y tiene el formato: `{Nombre del nivel de prueba} + {Índice}` + +Al referirse a un caso de prueba, para mayor claridad, se debe usar la letra mayúscula definida anteriormente para el nombre del nivel de prueba. + +El `{Índice}` es un sufijo de dos dígitos 01-99, y debe seleccionarse de manera que el identificador del caso de prueba sea único. Normalmente, se selecciona el primer índice libre. + +Ejemplos de identificadores de casos de prueba: + +- Address03 +- Basic04 +- DNSSEC15 +- Zone06 diff --git a/src/content/faq/es/undelegated.md b/src/content/faq/es/undelegated.md new file mode 100644 index 00000000..2d670f69 --- /dev/null +++ b/src/content/faq/es/undelegated.md @@ -0,0 +1,10 @@ +--- +question: ¿Qué es una prueba de dominio no delegado? +category: Usando Zonemaster +--- + +Una prueba de dominio no delegado es una prueba realizada en un nombre de dominio que puede, o no, estar completamente publicado en el DNS. + +Esto puede ser bastante útil si uno va a migrar su dominio de un registrador a otro, por ejemplo, migrar la zona 'example.com' del servidor de nombres 'ns.example.com' al servidor de nombres 'ns.example.org'. En este escenario, uno podría realizar una prueba de dominio no delegado proporcionando la zona ('example.com') y el servidor de nombres al que se está migrando ('ns.example.org') antes de migrar su dominio. + +Cuando los resultados de la prueba no muestran errores ni advertencias, se puede estar bastante seguro de que la nueva ubicación del dominio funciona bien. Sin embargo, aún puede haber otros problemas en los datos de la zona que esta prueba no detecta. diff --git a/src/content/faq/es/what-is-zonemaster.md b/src/content/faq/es/what-is-zonemaster.md new file mode 100644 index 00000000..c5d9dd2b --- /dev/null +++ b/src/content/faq/es/what-is-zonemaster.md @@ -0,0 +1,17 @@ +--- +question: ¿Qué es Zonemaster? +category: Información general +--- + +Zonemaster es un paquete de software que valida la calidad de una delegación DNS. + +La ambición del proyecto Zonemaster es desarrollar y mantener una herramienta de validación DNS de código abierto, ofreciendo un mejor rendimiento sobre las herramientas existentes y proporcionando una documentación extensa que podría ser reutilizada por proyectos similares en el futuro. + +Zonemaster consta de varios módulos o componentes: + +- Engine, un marco de pruebas que soporta toda la funcionalidad para realizar pruebas DNS; +- CLI, una interfaz de línea de comandos para el Engine; +- Backend, un servidor que permite ejecutar pruebas de Zonemaster y guardar los resultados utilizando una API JSON-RPC y una base de datos; +- GUI, una interfaz web para el Backend. + +Los componentes ayudarán a diferentes tipos de usuarios a verificar los servidores de nombres de un dominio en busca de errores de configuración y generar un informe que ayudará a corregir los errores. diff --git a/src/content/faq/es/who-is-behind-zonemaster.md b/src/content/faq/es/who-is-behind-zonemaster.md new file mode 100644 index 00000000..8cb06edd --- /dev/null +++ b/src/content/faq/es/who-is-behind-zonemaster.md @@ -0,0 +1,6 @@ +--- +question: ¿Quién está detrás de Zonemaster? +category: Información general +--- + +Zonemaster es un proyecto conjunto entre [AFNIC](https://www.afnic.fr/en/), el registro de los dominios ".fr" y varios otros dominios como ".re", ".pm", ".tf", ".wf", ".yt" y ".paris", y [The Swedish Internet Foundation](https://internetstiftelsen.se/en/), el registro de los dominios ".se" y ".nu". diff --git a/src/content/faq/fi/difference.md b/src/content/faq/fi/difference.md new file mode 100644 index 00000000..409f81e1 --- /dev/null +++ b/src/content/faq/fi/difference.md @@ -0,0 +1,10 @@ +--- +question: Mitä tekee Zonemasterista erilaisen kuin muista DNS-vyöhykkeen validointiohjelmista? +category: Yleistä tietoa +--- + +* Zonemaster tallentaa testihistorian verkkotunnuskohtaisesti, joten voit palata aiemmin tehtyihin testeihin ja vertailla niitä uusimpiin testituloksiin. +* Kaikki testit, jotka Zonemaster suorittaa, on määritelty Test Case Specification -dokumenteissa, jotka löytyvät [Test Case Specification -dokumenteista](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). +* Zonemasteria voidaan käyttää [ei-delegoitujen verkkotunnusten testaukseen](https://zonemaster.net/fi/faq#what-is-an-undelegated-domain-test). +* Zonemasteria voidaan käyttää [DS-tietueiden testaukseen ennen niiden julkaisua ylemmällä vyöhykkeellä](https://zonemaster.net/fi/faq#can-i-test-the-ds-records-before-they-are-published). +* Tämä avoimen lähdekoodin versio Zonemasterista on rakennettu modulaarisen koodirakenteen pohjalta, mikä mahdollistaa yksittäisten komponenttien integroinnin omaan järjestelmään tarpeen mukaan. Esimerkiksi harvoin on tarvetta käyttää koko ohjelmistoa pelkästään uudelleen-delegointien tarkistamiseen. diff --git a/src/content/faq/fi/distinguish.md b/src/content/faq/fi/distinguish.md new file mode 100644 index 00000000..db12ed0d --- /dev/null +++ b/src/content/faq/fi/distinguish.md @@ -0,0 +1,12 @@ +--- +question: Kuinka Zonemaster voi erottaa oikean ja väärän? +category: Yleistä tietoa +--- + +Zonemasterin arviointi perustuu ensisijaisesti DNS-standardeihin, jotka on määritelty RFC-dokumenteissa. Lisäksi arvioinnissa hyödynnetään DNS:n parhaita käytäntöjä (best practices), jotka voivat joissain tapauksissa olla vapaammin määriteltyjä kuin varsinaiset standardit. + +Kaikki Zonemasterin testit on määritelty [Test Case Specification -dokumenteissa](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications), joissa on esitetty myös viittaukset kuhunkin testiin liittyviin standardidokumentteihin. + +Viestiä _HUOMIO_, _VAROITUS_ ja _VIRHE_ koskevat kuvaukset löytyvät [Severity Level Definitions](https://github.com/zonemaster/zonemaster/blob/master/docs/public/specifications/tests/SeverityLevelDefinitions.md) -dokumentista. + +Toisinaan standardien tulkinnat tai näkemykset parhaista käytännöistä voivat vaihdella, ja Zonemaster-tiimi ottaa aina mielellään vastaan palautetta. Jos epäilet, että analyysissa on tapahtunut virhe, voit lähettää meille sähköpostia osoitteeseen [zonemaster-users@lists.iis.se](mailto:zonemaster-users@lists.iis.se) (moderoitu postilista). Liitä viestiin linkki testitulokseesi sekä perustelu sille, miksi uskot tuloksen olevan virheellinen. diff --git a/src/content/faq/fi/dnssec.md b/src/content/faq/fi/dnssec.md new file mode 100644 index 00000000..03ba6633 --- /dev/null +++ b/src/content/faq/fi/dnssec.md @@ -0,0 +1,6 @@ +--- +question: Tarkistaako Zonemaster DNSSEC:tä? +category: Zonemasterin käyttö +--- + +Kyllä. Jos DNSSEC on käytettävissä testatulle verkkotunnukselle, Zonemaster tarkistaa sen automaattisesti. diff --git a/src/content/faq/fi/ds-records.md b/src/content/faq/fi/ds-records.md new file mode 100644 index 00000000..9861ad3c --- /dev/null +++ b/src/content/faq/fi/ds-records.md @@ -0,0 +1,6 @@ +--- +question: Voinko testata DS-tietueita ennen niiden julkaisua? +category: Zonemasterin käyttö +--- + +Kyllä, se on mahdollista. Valitse "Näytä vaihtoehdot" ja lisää testattavat Delegation Signer (DS) -tietueet sitä kautta. Zonemaster käyttää näitä tietueita testissä samalla tavalla kuin jos ne olisi jo julkaistu ylätason vyöhykkeessä. diff --git a/src/content/faq/fi/errors.md b/src/content/faq/fi/errors.md new file mode 100644 index 00000000..810f58da --- /dev/null +++ b/src/content/faq/fi/errors.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster palauttaa "Virhe" tai "Varoitus" verkkotunnukselleni. Mitä se tarkoittaa? +category: Zonemasterin käyttö +--- + +Tämä riippuu siitä, mikä tai mitkä testit verkkotunnuksellesi ovat epäonnistuneet. Jokaisella testillä on yksi tai useampi viesti, jotka kuvaavat testauksen aikana havaittuja puutteita tai ongelmia. + +Voit myös saada lisätietoja jokaisesta testistä [Test Case Specification -dokumenteista](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). diff --git a/src/content/faq/fi/how-can-zonemaster-help.md b/src/content/faq/fi/how-can-zonemaster-help.md new file mode 100644 index 00000000..810f58da --- /dev/null +++ b/src/content/faq/fi/how-can-zonemaster-help.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster palauttaa "Virhe" tai "Varoitus" verkkotunnukselleni. Mitä se tarkoittaa? +category: Zonemasterin käyttö +--- + +Tämä riippuu siitä, mikä tai mitkä testit verkkotunnuksellesi ovat epäonnistuneet. Jokaisella testillä on yksi tai useampi viesti, jotka kuvaavat testauksen aikana havaittuja puutteita tai ongelmia. + +Voit myös saada lisätietoja jokaisesta testistä [Test Case Specification -dokumenteista](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). diff --git a/src/content/faq/fi/ipv6.md b/src/content/faq/fi/ipv6.md new file mode 100644 index 00000000..70c842e9 --- /dev/null +++ b/src/content/faq/fi/ipv6.md @@ -0,0 +1,6 @@ +--- +question: Tukeeeko Zonemaster IPv6:ta? +category: Zonemasterin käyttö +--- + +Kyllä, tukee. Oletusarvoisesti Zonemaster tekee kyselyt nimipalvelimille sekä IPv4- että IPv6-yhteyksien kautta, ellei asetuksia ole erikseen muutettu. Tätä toimintaa voi säätää "Näytä vaihtoehdot" -painikkeen kautta. diff --git a/src/content/faq/fi/not-tested.md b/src/content/faq/fi/not-tested.md new file mode 100644 index 00000000..685fbf4d --- /dev/null +++ b/src/content/faq/fi/not-tested.md @@ -0,0 +1,12 @@ +--- +question: Miksi verkkotunnustani ei voi testata? +category: Zonemasterin käyttö +--- + +Tähän voi olla useita syitä. + +* Verkkotunnustasi ei ole vielä delegoitu nimipalvelimille. +* Verkkotunnus ei ole saavutettavissa julkisesta internetistä. +*Zonemaster voi testata vain DNS-vyöhykkeitä (verkkotunnuksia), kuten 'zonemaster.net', eikä yksittäisiä isäntänimiä, kuten 'www.zonemaster.net'. +* Samoilla testiparametreilla tehtävien peräkkäisten testien välillä on 10 minuutin suoja-aika. Tänä aikana uusi testaus näyttää viimeisimmän kyseiselle verkkotunnukselle ja parametreille suoritetun testin tuloksen. +* Verkkotunnus on voitu kirjoittaa väärin. diff --git a/src/content/faq/fi/privacy.md b/src/content/faq/fi/privacy.md new file mode 100644 index 00000000..c17bafb0 --- /dev/null +++ b/src/content/faq/fi/privacy.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster ja yksityisyys +category: Yleistä tietoa +--- + +Tietokantaan tallennetaan ainoastaan testattava verkkotunnus, käytetyt testiparametrit sekä testien tulokset. Erityisesti korostamme, että emme tallenna mitään tietoa, jonka perusteella testin voisi yhdistää sen käynnistäneeseen käyttäjään. + +Koska [zonemaster.net](https://zonemaster.net), kuten muutkin julkiset Zonemaster-instanssit, on vapaasti kaikkien käytettävissä, on kuitenkin mahdollista, että kuka tahansa voi testata verkkotunnustasi ja tarkastella sen testihistoriaa. diff --git a/src/content/faq/fi/queries.md b/src/content/faq/fi/queries.md new file mode 100644 index 00000000..4b84efd9 --- /dev/null +++ b/src/content/faq/fi/queries.md @@ -0,0 +1,11 @@ +--- +question: Mitä tyyppisiä DNS-kyselyjä Zonemaster generoi? +category: Yleistä tietoa +--- + +Zonemaster lähettää useita DNS-kyselyjä nimipalvelimille, jotka isännöivät testattavaa verkkotunnusta, sekä niille nimipalvelimille, jotka isännöivät verkkotunnuksen ylävyöhykettä (parent zone). + +Zonemasterin verkkokäyttöliittymä ei näytä lähetettyjä DNS-kyselyjä, vaan ainoastaan komentorivikäyttöliittymä (CLI) mahdollistaa niiden tarkastelun. Jos haluat nähdä yksittäiset kyselyt, sinun on asennettava paikallisesti toimiva Zonemaster-instanssi, jossa on sekä Engine- että CLI-komponentit. Lisätietoja löytyy [CLI-asennusdokumentista](https://github.com/zonemaster/zonemaster/blob/master/docs/public/installation/zonemaster-cli.md). +Vaihtoehtoisesti voit käyttää myös valmista [Docker-kuvaa](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md#Invoking-the-command-line-tool-using-Docker). + +Lähetetyt DNS-kyselyt voidaan tulostaa käyttämällä 'DEBUG'-tasoa. Huomioithan, että CLI:n tuloste voi tällöin olla erittäin laaja. Lisätietoja on saatavilla [CLI-käyttöohjeista](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md). diff --git a/src/content/faq/fi/reverse-zone.md b/src/content/faq/fi/reverse-zone.md new file mode 100644 index 00000000..df788c51 --- /dev/null +++ b/src/content/faq/fi/reverse-zone.md @@ -0,0 +1,11 @@ +--- +question: Kuinka voin testata "käänteisvyöhykettä" Zonemasterilla? +category: Zonemasterin käyttö +--- + +Käänteisvyöhykkeen tarkistamiseksi Zonemasterilla on ensin tiedettävä, mikä käänteisvyöhyke on, ja syöttää se DNS:ssä käytettävään muotoon. Käänteisvyöhyke muodostetaan kääntämällä IP-osoitteen numerot toisinpäin ja lisäämällä siihen oikea pääte. IPv4-osoitteet käyttävät päätettä "in-addr.arpa", IPv6-osoitteet käyttävät päätettä "ip6.arpa". + +Esimerkit: + +* IPv4-prefixille "198.51.100.0/24": 100.51.198.in-addr.arpa +* IPv6-prefixille "2001:db8::/32": 8.b.d.0.1.0.0.2.ip6.arpa diff --git a/src/content/faq/fi/severity-levels.md b/src/content/faq/fi/severity-levels.md new file mode 100644 index 00000000..824ccf31 --- /dev/null +++ b/src/content/faq/fi/severity-levels.md @@ -0,0 +1,19 @@ +--- +question: Mitä vakavuustasot tarkoittavat? +category: Zonemasterin käyttö +--- + +Info +: Viesti on luonteeltaan informatiivinen. Se voi olla vyöhykkeen ylläpitäjän kannalta kiinnostava, mutta se ei viittaa ongelmaan. + +Huomio +: Viesti kertoo asiasta, joka vyöhykkeen ylläpitäjän on hyvä tietää, mutta joka ei välttämättä ole varsinainen ongelma. + +Varoitus +: Viesti viittaa seikkaan, joka tietyissä tilanteissa voi muodostua ongelmaksi, mutta jota tavallinen käyttäjä ei todennäköisesti huomaa. + +Virhe +: Viesti kertoo ongelmasta, joka todennäköisesti vaikuttaa kielteisesti testattavan vyöhykkeen (verkkotunnuksen) toimintaan, mutta ei ole niin vakava, että koko vyöhyke lakkaisi toimimasta. + +Kriittinen +: Viesti kertoo erittäin vakavasta virheestä, joka estää verkkotunnuksen toiminnan olennaisilta osin. diff --git a/src/content/faq/fi/test-case-identifiers.md b/src/content/faq/fi/test-case-identifiers.md new file mode 100644 index 00000000..5c4879a4 --- /dev/null +++ b/src/content/faq/fi/test-case-identifiers.md @@ -0,0 +1,38 @@ +--- +question: Mitä Test Case -tunnisteet ovat? +category: Zonemasterin käyttö +--- + +Kaikki testitapaukset kuuluvat yhteen tiettyyn testitasoon, ja niiden nimet perustuvat +tämän testitasoon nimeen. Seuraavat testitasot on määritelty ja saatavilla: + +- Address +- Basic +- Connectivity +- Consistency +- DNSSEC +- Delegation +- Nameserver +- Syntax +- Zone + +Testitasojen nimet eivät ole kirjainkohtaisia, mutta yllä määritellyt muodot +tulee käyttää viittaamalla testitasoihin, eli vain ensimmäinen kirjain +iso, paitsi akronyymit, joille käytetään kaikkia isoja kirjaimia. +Esimerkiksi "Address" eikä "ADDRESS" eikä "address". + +Testitapauksen tunniste testitapauksen määrittelyssä (sekä pääotsikossa että "Testitapauksen tunniste" -osiossa) käyttää testitasojen nimeä, +kuin yllä määritelty, ja sillä on muoto: `{Testitaso nimi} + {Indeksi}` + +Viittaamalla testitapaukseen, luettavuuden vuoksi, yllä määritelty kirjainkohtaisuus +tulee käyttää testitasojen nimille. + +`{Indeksi}` on kaksi-numeroinen pääte 01-99, ja se tulee valita niin, että +testitapauksen tunniste on yksilöllinen. Yleensä ensimmäinen vapaa indeksi valitaan. + +Esimerkkejä testitapauksen tunnisteista: + +- Address03 +- Basic04 +- DNSSEC15 +- Zone06 diff --git a/src/content/faq/fi/undelegated.md b/src/content/faq/fi/undelegated.md new file mode 100644 index 00000000..9bbe7fd7 --- /dev/null +++ b/src/content/faq/fi/undelegated.md @@ -0,0 +1,10 @@ +--- +question: Mitä on ei-delegoitu verkkotunnustesti? +category: Zonemasterin käyttö +--- + +Ei-delegoitu verkkotunnustesti tarkoittaa testiä, joka suoritetaan verkkotunnukselle, jota ei ole vielä delegoitu nimipalvelimille tai joka ei ole vielä täysin julkaistu DNS:ssä. + +Tämä on erityisen hyödyllistä tilanteissa, joissa olet siirtämässä verkkotunnusta yhdeltä nimipalvelimelta toiselle. Esimerkiksi jos aiot siirtää vyöhykkeen 'example.com' nimipalvelimelta 'ns.example.com' nimipalvelimelle 'ns.example.org', voit suorittaa ei-delegoidun testin jo etukäteen syöttämällä vyöhykkeen ('example.com') ja tulevan nimipalvelimen ('ns.example.org') ennen varsinaista siirtoa. + +Jos testin tulokset eivät sisällä virheitä tai varoituksia, voit olla melko varma siitä, että verkkotunnuksen uusi nimipalvelinympäristö toimii teknisesti oikein. On kuitenkin hyvä huomioida, että vyöhykkeen tiedoissa voi silti olla sellaisia ongelmia, joita tämä testi ei havaitse. diff --git a/src/content/faq/fi/what-is-zonemaster.md b/src/content/faq/fi/what-is-zonemaster.md new file mode 100644 index 00000000..2ec770a9 --- /dev/null +++ b/src/content/faq/fi/what-is-zonemaster.md @@ -0,0 +1,17 @@ +--- +question: Mikä on Zonemaster? +category: Yleistä tietoa +--- + +Zonemaster on ohjelmistokokonaisuus, joka analysoi ja validoi DNS-vyöhykkeiden delegoinnin oikeellisuuden, standardienmukaisuuden ja toimivuuden. + +Zonemaster-projektin tavoitteena on kehittää ja ylläpitää avoimen lähdekoodin DNS-validointityökalua, joka tarjoaa paremman suorituskyvyn verrattuna olemassa oleviin työkaluihin sekä kattavan dokumentaation, jota voidaan tulevaisuudessa hyödyntää myös muissa vastaavissa projekteissa. + +Zonemaster koostuu useista moduuleista tai komponenteista: + +- Engine, testauskehys, joka tukee kaikkia DNS-testien suorittamiseen tarvittavia toimintoja; +- CLI, komentorivikäyttöliittymä Engineen; +- Backend, palvelin, joka mahdollistaa Zonemaster-testien suorittamisen ja tulosten tallentamisen JSON-RPC API:n ja tietokannan avulla; +- GUI, verkkokäyttöliittymä Backendiin. + +Komponentit tukevat verkkotunnusten nimipalvelinasetusten tarkistamista, mahdollisten konfiguraatiovirheiden tunnistamista sekä yksityiskohtaisen raportin tuottamista virheiden korjaamisen tueksi. diff --git a/src/content/faq/fi/who-is-behind-zonemaster.md b/src/content/faq/fi/who-is-behind-zonemaster.md new file mode 100644 index 00000000..24203234 --- /dev/null +++ b/src/content/faq/fi/who-is-behind-zonemaster.md @@ -0,0 +1,6 @@ +--- +question: Kuka on Zonemasterin takana? +category: Yleistä tietoa +--- + +Zonemaster on yhteinen projekti [AFNIC](https://www.afnic.fr/en/):n ja [The Swedish Internet Foundation](https://internetstiftelsen.se/en/):n välillä. AFNIC toimii ".fr" TLD:n sekä useiden muiden TLD:ien, kuten ".re", ".pm", ".tf", ".wf", ".yt" ja ".paris", verkkotunnusrekisterinä. The Swedish Internet Foundation puolestaan toimii ".se"- ja ".nu"-TLD:ien verkkotunnusrekisterinä. diff --git a/src/content/faq/fr/difference.md b/src/content/faq/fr/difference.md new file mode 100644 index 00000000..a3cd54c1 --- /dev/null +++ b/src/content/faq/fr/difference.md @@ -0,0 +1,11 @@ +--- +question: Qu'est-ce qui distingue Zonemaster des autres outils de validation de zone DNS ? +category: Informations générales +--- + +* Zonemaster conserve tout l'historique des tests réalisés sur un nom de domaine, ce qui signifie que vous pouvez revenir en arrière pour comparer les résultats d'un test remontant à un certain temps et ceux d'un test que vous avez lancé il y a un instant. +* Tous les tests qu'effectue Zonemaster sont définis dans des documents de spécification de cas de test, qui se trouvent dans les [documents de spécifications de cas de test](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications) (en anglais). +* Zonemaster peut être utilisé pour tester des [noms de domaines non délégués](https://zonemaster.net/fr/faq#what-is-an-undelegated-domain-test). +* Zonemaster peut être utilisé pour tester des [enregistrements DS avant leur publication dans la zone parente](https://zonemaster.net/en/faq#can-i-test-the-ds-records-before-they-are-published). +* Cette version « open source » de Zonemaster a été écrite de manière modulaire, ce qui signifie en résumé qu'il est possible d'intégrer des parties de Zonemaster dans vos propres systèmes, si vous le souhaitez. Par exemple, on souhaite rarement utiliser un logiciel complet juste pour vérifier des redélégations. + diff --git a/src/content/faq/fr/distinguish.md b/src/content/faq/fr/distinguish.md new file mode 100644 index 00000000..1e2a888c --- /dev/null +++ b/src/content/faq/fr/distinguish.md @@ -0,0 +1,12 @@ +--- +question: Comment Zonemaster discerne-t-il le bon du mauvais ? +category: Informations générales +--- + +Le jugement de Zonemaster repose principalement sur les normes techniques du DNS telles qu'elles sont définies dans les RFC. Le jugement est également fondé sur les bonnes pratiques du DNS, dont la définition est plus souple. + +Tous les tests de Zonemaster sont définis dans les [documents de spécifications de cas de test (en anglais)](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications), dans lesquels se trouvent les références aux documents normatifs pour chaque cas de test. + +Les descriptions de niveaux de messages comme _NOTE_, _AVERTISSEMENT_ et _ERREUR_ se trouvent dans [le document de définition des niveaux de sévérités (en anglais)](https://github.com/zonemaster/zonemaster/blob/master/docs/public/specifications/tests/SeverityLevelDefinitions.md). + +Parfois, les normes techniques ou les opinions de ce qui constitue une bonne pratique peuvent faire l'objet d'interprétations multiples ; l'équipe de Zonemaster est toujours ouverte aux commentaires. Si vous pensez que nous avons fait une erreur dans notre jugement, n'hésitez pas à nous envoyer un courriel à [zonemaster-users@lists.iis.se](mailto:zonemaster-users@lists.iis.se) (liste de diffusion modérée) avec un lien vers le résultat de votre test et en expliquant pourquoi vous pensez que Zonemaster affiche quelque chose que vous considérez comme incorrect. \ No newline at end of file diff --git a/src/content/faq/fr/dnssec.md b/src/content/faq/fr/dnssec.md new file mode 100644 index 00000000..89591c4f --- /dev/null +++ b/src/content/faq/fr/dnssec.md @@ -0,0 +1,6 @@ +--- +question: Zonemaster vérifie-t-il DNSSEC ? +category: Utilisation de Zonemaster +--- + +Oui. Si DNSSEC est disponible pour un nom de domaine testé par Zonemaster, cela sera automatiquement vérifié. diff --git a/src/content/faq/fr/ds-records.md b/src/content/faq/fr/ds-records.md new file mode 100644 index 00000000..17186cef --- /dev/null +++ b/src/content/faq/fr/ds-records.md @@ -0,0 +1,6 @@ +--- +question: Peut-on tester des enregistrements DS avant leur publication ? +category: Utilisation de Zonemaster +--- + +Oui. Pour cela, utilisez le bouton "Afficher les options" et ajoutez-y les enregistrements DS à tester. Zonemaster utilisera ces entrées-là comme si elles avaient déjà été ajoutées dans la zone parente. diff --git a/src/content/faq/fr/errors.md b/src/content/faq/fr/errors.md new file mode 100644 index 00000000..07e7efba --- /dev/null +++ b/src/content/faq/fr/errors.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster affiche des "Erreurs" ou "Avertissements" pour mon nom de domaine. Qu'est-ce que cela signifie ? +category: Utilisation de Zonemaster +--- + +Cela dépend du test ayant échoué pour votre nom de domaine. Chaque test est accompagné d'un ou plusieurs messages décrivant les problèmes qui ont été trouvés. + +Vous pouvez également trouver des détails supplémentaires sur chaque test dans le [document de spécification des cas de tests (en anglais)](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). diff --git a/src/content/faq/fr/how-can-zonemaster-help.md b/src/content/faq/fr/how-can-zonemaster-help.md new file mode 100644 index 00000000..56bf7144 --- /dev/null +++ b/src/content/faq/fr/how-can-zonemaster-help.md @@ -0,0 +1,11 @@ +--- +question: Qu'est-ce que Zonemaster peut faire pour moi ? +category: Informations générales +--- + +Zonemaster peut aider différents types d'utilisateurs et utilisatrices: + +* les administrateurs et administratrices DNS, expert(e)s comme débutant(e)s, qui veulent vérifier leur configuration DNS ; +* les utilisateurs et utilisatrices souhaitant savoir si les noms de domaine qu'ils possèdent ou utilisent ont des problèmes. + +Les utilisateurs et utilisatrices de la seconde catégorie devraient contacter leur opérateur DNS si le moindre test de leur nom de domaine rapporte une erreur ou un avertissement. diff --git a/src/content/faq/fr/ipv6.md b/src/content/faq/fr/ipv6.md new file mode 100644 index 00000000..eb8b253a --- /dev/null +++ b/src/content/faq/fr/ipv6.md @@ -0,0 +1,6 @@ +--- +question: Zonemaster est-il compatible avec IPv6 ? +category: Utilisation de Zonemaster +--- + +Oui. Par défaut, Zonemaster interroge les serveurs de noms aussi bien en IPv4 qu'en IPv6, sauf si un paramètre de configuration prescrit le contraire. Ces paramètres sont accessibles par le bouton « Afficher les options ». diff --git a/src/content/faq/fr/not-tested.md b/src/content/faq/fr/not-tested.md new file mode 100644 index 00000000..88a61746 --- /dev/null +++ b/src/content/faq/fr/not-tested.md @@ -0,0 +1,12 @@ +--- +question: Pourquoi mon nom de domaine n'a-t-il pas pu être testé ? +category: Utilisation de Zonemaster +--- + +Il y a plusieurs possibilités : + +* Votre domaine n'est pas encore délégué. +* Votre domaine n'est pas joignable publiquement depuis Internet. +* Zonemaster peut seulement tester ce qu'on appelle une zone DNS, par exemple "zonemaster.net", et non pas les noms d'hôte, comme "www.zonemaster.net". +* Il y a une temporisation de dix minutes entre deux tests consécutifs d'un même nom de domaine, avec les mêmes paramètres de test. Lancer un second test dans cette fenêtre de temps donnera les résultats du dernier test effectué pour ce nom de domaine et ces paramètres, au lieu d'un nouveau test. +* Il y a une faute de frappe dans le nom de domaine. diff --git a/src/content/faq/fr/privacy.md b/src/content/faq/fr/privacy.md new file mode 100644 index 00000000..fe621059 --- /dev/null +++ b/src/content/faq/fr/privacy.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster et vie privée +category: Informations générales +--- + +Rien hormis le domaine du test, les autres paramètres du test et le résultat n'est stocké dans la base de données. En particulier, nous ne stockons aucune information qui pourrait lier un test à la personne qui l'a initié. + +Toutefois, puisque [zonemaster.net](https://zonemaster.net), comme d'autres instances publiques, est accessible à tout le monde, quiconque peut tester votre domaine et consulter son historique de tests. diff --git a/src/content/faq/fr/queries.md b/src/content/faq/fr/queries.md new file mode 100644 index 00000000..4bee7e1a --- /dev/null +++ b/src/content/faq/fr/queries.md @@ -0,0 +1,10 @@ +--- +question: Quel genre de requêtes DNS Zonemaster génère-t-il ? +category: Informations générales +--- + +Zonemaster envoie plusieurs requêtes DNS aux serveurs de noms hébergeant le nom de domaine à tester ainsi qu'aux serveurs de noms hébergeant la zone parente du même nom de domaine. + +L'interface Web de Zonemaster n'affiche pas les requêtes envoyées, seule l'interface en ligne de commande en est capable. Si vous souhaitez voir ces requêtes, vous devez installer localement une instance minimale et fonctionnelle de Zonemaster doté des composants Engine et CLI. Vous pouvez consulter le [document d'installation de la CLI (en anglais)](https://github.com/zonemaster/zonemaster/blob/master/docs/public/installation/zonemaster-cli.md) pour plus d'informations, ou, si vous préférez, une [image Docker](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md#Invoking-the-command-line-tool-using-Docker) est aussi disponible. + +Les requêtes envoyées peuvent être affichées avec l'option de niveau de messages _DEBUG_. Attention, la quantité de données affichées par l'interface en ligne de commande peut être très volumineuse. Pour plus d'informations, consulter [la documentation d'utilisation de l'interface en ligne de commandes (en anglais)](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md). diff --git a/src/content/faq/fr/reverse-zone.md b/src/content/faq/fr/reverse-zone.md new file mode 100644 index 00000000..c959dd9a --- /dev/null +++ b/src/content/faq/fr/reverse-zone.md @@ -0,0 +1,11 @@ +--- +question: Comment tester une zone "inverse" avec Zonemaster ? +category: Utilisation de Zonemaster +--- + +Pour tester une zone inverse, il faut d'abord déterminer le nom de la zone inverse, puis la saisir dans le format qu'elle a dans le DNS. Une zone inverse s'obtient en inversant une adresse IP et en ajoutant un suffixe. Les adresses IPv4 utilisent le suffixe "in-addr.arpa" tandis que les adresses IPv6 utilisent "ip6.arpa". + +Exemples: + +* pour le préfixe IPv4 "198.51.100.0/24" : 100.51.198.in-addr.arpa +* pour le préfixe IPv6 "2001:db8::/32" : 8.b.d.0.1.0.0.2.ip6.arpa diff --git a/src/content/faq/fr/severity-levels.md b/src/content/faq/fr/severity-levels.md new file mode 100644 index 00000000..60804e53 --- /dev/null +++ b/src/content/faq/fr/severity-levels.md @@ -0,0 +1,19 @@ +--- +question: Que signifient les niveaux de sévérité ? +category: Utilisation de Zonemaster +--- + +Info +: Le message indique une information pouvant être utile pour la personne administrant la zone, mais qui n’est en aucun cas une anomalie. + +Note +: Le message indique un élément dont la personne administrant la zone devrait prendre connaissance sans qu’il ne s’agisse nécessairement d’un problème de configuration. + +Avertissement +: Le message indique un élément pouvant causer un dysfonctionnement dans certaines circonstances, mais qu’une personne non avertie a peu de chances de repérer. + +Erreur +: Le message indique une anomalie pouvant provoquer de façon (quasi) certaine un dysfonctionnement de la zone testée, sans être suffisamment grave pour rendre l’intégralité de la zone inaccessible. + +Critique +: Le message indique une erreur très grave. diff --git a/src/content/faq/fr/test-case-identifiers.md b/src/content/faq/fr/test-case-identifiers.md new file mode 100644 index 00000000..cb03fc79 --- /dev/null +++ b/src/content/faq/fr/test-case-identifiers.md @@ -0,0 +1,31 @@ +--- +question: Qu'est ce qu'un identifiant de cas de test ? +category: Utilisation de Zonemaster +--- + +Tous les cas de test appartiennent à un niveau de test spécifique et leurs noms reprennent le nom de ce niveau de test. Les niveaux de test suivants sont définis : + +- Address +- Basic +- Connectivity +- Consistency +- DNSSEC +- Delegation +- Nameserver +- Syntax +- Zone + +Le nom du niveau de test n'est pas sensible à la casse, mais les formes définies ci-dessus doivent être utilisées lors de la référence aux niveaux de test, c'est-à-dire seulement la première lettre en majuscule, sauf pour les acronymes pour lesquels toutes les lettres sont en majuscules. Par exemple « Address » et non « ADDRESS » ni « address ». + +L'identifiant de cas de test dans la spécification de cas de test (à la fois dans le titre principal et dans la section « Identifiant de cas de test ») utilise le nom du niveau de test, comme défini ci-dessus, et a le format : `{Nom du niveau de test} + {Indice}` + +Lors de la référence à un cas de test, pour la lisibilité, la casse des lettres définie ci-dessus doit être utilisée pour le nom du niveau de test. + +L'`{Indice}` est un suffixe à deux chiffres 01-99, et doit être sélectionné de manière à ce que l'identifiant de cas de test soit unique. Normalement, le premier indice libre est sélectionné. + +Exemples d'identifiants de cas de test : + +- Address03 +- Basic04 +- DNSSEC15 +- Zone06 diff --git a/src/content/faq/fr/undelegated.md b/src/content/faq/fr/undelegated.md new file mode 100644 index 00000000..3202ff6b --- /dev/null +++ b/src/content/faq/fr/undelegated.md @@ -0,0 +1,10 @@ +--- +question: Qu'est-ce qu'un test sur un nom de domaine non délégué ? +category: Utilisation de Zonemaster +--- + +Un test sur un nom de domaine non délégué est un test effectué sur un nom de domaine qui peut ne pas être entièrement publié dans le DNS. + +Ce type de test peut être très utile lorsqu'on est en train de migrer un domaine d'un bureau d'enregistrement vers un autre, par exemple lorsque l'on migre la zone "example.com" du serveur de noms "ns.example.com" vers le serveur de noms "ns.example.org". Dans ce cas de figure, on pourrait effectuer un test sur un nom de domaine non délégué, en fournissant la zone ("example.com") et le serveur de noms vers lequel on migre ("ns.example.org") avant de migrer le domaine. + +Si le résultat du test ne comporte aucune erreur ni avertissement, on peut être relativement certain que le nouvel emplacement du domaine fonctionne bien. Mais cela n'exclut pas l'existence d'autres problèmes dans les données elles-mêmes de la zone que ce test n'aurait pas décelés. diff --git a/src/content/faq/fr/what-is-zonemaster.md b/src/content/faq/fr/what-is-zonemaster.md new file mode 100644 index 00000000..60dfcd3d --- /dev/null +++ b/src/content/faq/fr/what-is-zonemaster.md @@ -0,0 +1,17 @@ +--- +question: Qu'est ce que Zonemaster ? +category: Informations générales +--- + +Zonemaster est un logiciel qui valide la qualité d'une délégation DNS. + +L'ambition du projet Zonemaster est de développer et de maintenir un outil de validation DNS open source, offrant de meilleures performances par rapport aux outils existants et fournissant une documentation complète qui pourrait être réutilisée par des projets similaires à l'avenir. + +Zonemaster est composé de plusieurs modules ou composants : + +- Engine, un cadriciel de tests prenant en charge toutes les fonctionnalités pour les tests DNS ; +- CLI, une interface en ligne de commande pour l'Engine ; +- Backend, un serveur permettant l’exécution de tests et la sauvegarde de résultats au moyen d'une API JSON-RPC et d'une base de données ; +- GUI, une interface Web au Backend. + +Ces composants aideront différents types d'utilisateurs et utilisatrices à vérifier les erreurs de configuration des serveurs de noms du domaine et à générer un rapport qui aidera à corriger les erreurs. diff --git a/src/content/faq/fr/who-is-behind-zonemaster.md b/src/content/faq/fr/who-is-behind-zonemaster.md new file mode 100644 index 00000000..9da1c2a6 --- /dev/null +++ b/src/content/faq/fr/who-is-behind-zonemaster.md @@ -0,0 +1,6 @@ +--- +question: Qui est derrière Zonemaster ? +category: Informations générales +--- + +Zonemaster est un projet conjoint entre l'[AFNIC](https://www.afnic.fr), registre du TLD ".fr" ainsi que autres tels que ".re", ".pm", ".tf", ".wf", ".yt" et ".paris", et [The Swedish Internet Foundation](https://internetstiftelsen.se), registre des TLD ".se" et ".nu". diff --git a/src/content/faq/nb/difference.md b/src/content/faq/nb/difference.md new file mode 100644 index 00000000..2985eda0 --- /dev/null +++ b/src/content/faq/nb/difference.md @@ -0,0 +1,10 @@ +--- +question: Hva gjør Zonemaster annerledes fra andre DNS-sonevalideringsprogrammer? +category: Generell informasjon +--- + +* Zonemaster lagrer all historie fra tidligere tester basert på det testede domenenavnet, hvilket betyr at du kan gå tilbake til en test du gjorde for en stund siden og sammenligne den med testen du nettopp kjørte. +* Alle tester som Zonemaster kjører er definert i Test Case Specification-dokumentene som kan finnes i [Test Case Specification-dokumentene](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). +* Zonemaster kan brukes til å teste [udelegerte domenenavn](https://zonemaster.net/nb/faq#what-is-an-undelegated-domain-test). +* Zonemaster kan brukes til å teste [DS-oppføringer før deres publisering i overordnet sone](https://zonemaster.net/nb/faq#can-i-test-the-ds-records-before-they-are-published). +* Denne åpne kildekodeversjonen av Zonemaster ble bygget ved hjelp av modulær kode, hvilket betyr at du kan integrere deler av den i dine egne systemer, hvis du ønsker. For eksempel er det ganske sjeldent at du ville ønske et komplett program bare for å sjekke for omdelegeringer. diff --git a/src/content/faq/nb/distinguish.md b/src/content/faq/nb/distinguish.md new file mode 100644 index 00000000..42382933 --- /dev/null +++ b/src/content/faq/nb/distinguish.md @@ -0,0 +1,12 @@ +--- +question: Hvordan kan Zonemaster skille mellom hva som er riktig og galt? +category: Generell informasjon +--- + +Zonemasters dømming baserer seg primært på DNS-standardene som er definert i RFC-er. Den baserer også sin dømming på DNS-best practices, som kan være mer løst definert. + +Alle Zonemaster-tester er definert i [Test Case Specification-dokumentene](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications), hvor referansene til standarddokumentene for hver testtilfelle finnes. + +Beskrivelsene av meldingsnivåer som _NOTIS_, _ADVARSEL_ og _FEIL_ finnes i [Severity Level Definitions](https://github.com/zonemaster/zonemaster/blob/master/docs/public/specifications/tests/SeverityLevelDefinitions.md). + +Noen ganger er det forskjellige tolkninger av standardene eller meninger om hva som er best practice, og Zonemaster-teamet er alltid åpent for innspill. Hvis du tror vi har gjort en feil i vår dømming, vær så snill å sende oss en e-post på [zonemaster-users@lists.iis.se](mailto:zonemaster-users@lists.iis.se) (moderert postliste) med en lenke til ditt testresultat og en forklaring på hvorfor du tror det viser noe du mener er feil. diff --git a/src/content/faq/nb/dnssec.md b/src/content/faq/nb/dnssec.md new file mode 100644 index 00000000..7cb8e6fa --- /dev/null +++ b/src/content/faq/nb/dnssec.md @@ -0,0 +1,6 @@ +--- +question: Sjekker Zonemaster DNSSEC? +category: Bruk av Zonemaster +--- + +Ja. Hvis DNSSEC er tilgjengelig for et domenenavn som testes av Zonemaster, vil det bli sjekket automatisk. diff --git a/src/content/faq/nb/ds-records.md b/src/content/faq/nb/ds-records.md new file mode 100644 index 00000000..98093b64 --- /dev/null +++ b/src/content/faq/nb/ds-records.md @@ -0,0 +1,6 @@ +--- +question: Kan jeg teste DS-oppføringene før de blir publisert? +category: Bruk av Zonemaster +--- + +Ja. Bruk "Vis alternativer"-knappen og legg der til Delegation Signer (DS)-oppføringene som skal testes. Zonemaster vil deretter bruke dem på samme måte som om de allerede var lagt til i overordnet sone. diff --git a/src/content/faq/nb/errors.md b/src/content/faq/nb/errors.md new file mode 100644 index 00000000..3e329268 --- /dev/null +++ b/src/content/faq/nb/errors.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster returnerer "Feil" eller "Advarsel" for mitt domenenavn. Hva betyr det? +category: Bruk av Zonemaster +--- + +Det avhenger av hvilken test som feilet for ditt domenenavn. Hver test følges av en eller flere meldinger som beskriver de funnne problemene. + +Du kan også få mer innsikt om hver test fra [Test Case Specification-dokumentene](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). diff --git a/src/content/faq/nb/how-can-zonemaster-help.md b/src/content/faq/nb/how-can-zonemaster-help.md new file mode 100644 index 00000000..ac9e36c2 --- /dev/null +++ b/src/content/faq/nb/how-can-zonemaster-help.md @@ -0,0 +1,11 @@ +--- +question: Hvordan kan Zonemaster hjelpe meg? +category: Generell informasjon +--- + +Zonemaster-verktøyet kan hjelpe forskjellige typer brukere: + +* DNS-administratorer, eksperter og nybegynnere likt, som vil sjekke sin DNS-konfigurasjon; +* brukere som vil vite om domenenavnet de eier eller bruker har noen problemer eller ikke. + +Brukere i den andre kategorien bør kontakte sin DNS-operatør hvis det er feil eller advarsler for noen test av deres domenenavn. diff --git a/src/content/faq/nb/ipv6.md b/src/content/faq/nb/ipv6.md new file mode 100644 index 00000000..edf864ff --- /dev/null +++ b/src/content/faq/nb/ipv6.md @@ -0,0 +1,6 @@ +--- +question: Støtter Zonemaster IPv6? +category: Bruk av Zonemaster +--- + +Ja. Som standard vil Zonemaster spørre navneservere både over IPv4 og IPv6, med mindre det er eksplisitt konfigurert annet. En slik konfigurasjon er tilgjengelig gjennom "Vis alternativer"-knappen. diff --git a/src/content/faq/nb/not-tested.md b/src/content/faq/nb/not-tested.md new file mode 100644 index 00000000..5af17715 --- /dev/null +++ b/src/content/faq/nb/not-tested.md @@ -0,0 +1,12 @@ +--- +question: Hvorfor kan ikke mitt domenenavn testes? +category: Bruk av Zonemaster +--- + +Det er flere muligheter. + +* Ditt domenenavn er ikke enda delegeret. +* Ditt domenenavn er ikke tilgjengelig fra det offentlige Internett. +* Zonemaster kan bare teste det som kalles en DNS-sone, for eksempel 'zonemaster.net', og ikke vertsnavn, som 'www.zonemaster.net'. +* Det er en 10-minutters beskyttelse mellom påfølgende tester for et gitt domenenavn, med samme testparametere. Å kjøre en test innenfor dette vinduet vil i stedet vise den siste tilgjengelige testen for det domenenavnet og parametrene. +* Du har stavet feil på ditt domenenavn. diff --git a/src/content/faq/nb/privacy.md b/src/content/faq/nb/privacy.md new file mode 100644 index 00000000..0ee1d886 --- /dev/null +++ b/src/content/faq/nb/privacy.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster og personvern +category: Generell informasjon +--- + +Ingenting annet enn testdomenet, andre testparametere og resultatet lagres i databasen. Spesielt lagrer vi ingen informasjon som kan knytte en test til brukeren som initierte den. + +Imidlertid, siden [zonemaster.net](https://zonemaster.net), liksom andre offentlige instanser, er åpen for alle, er det mulig for enhver å teste ditt domene og se dets testhistorie. diff --git a/src/content/faq/nb/queries.md b/src/content/faq/nb/queries.md new file mode 100644 index 00000000..df6169a5 --- /dev/null +++ b/src/content/faq/nb/queries.md @@ -0,0 +1,10 @@ +--- +question: Hvilke typer DNS-spørringer genererer Zonemaster? +category: Generell informasjon +--- + +Zonemaster sender flere DNS-spørringer til navnetjenere som vert for det testede domenenavnet og også til navnetjenere som vert for overordnet sone for det domenenavnet. + +Webgrensesnittet til Zonemaster viser ikke de spørringene som ble sendt, bare CLI-grensesnittet kan. Hvis du vil se slike spørringer, må du installere en minimalt fungerende Zonemaster-instans lokalt med både Engine- og CLI-komponentene. Se [CLI-installasjonsdokumentet](https://github.com/zonemaster/zonemaster/blob/master/docs/public/installation/zonemaster-cli.md) for mer informasjon, eller hvis du foretrekker en [Docker-bilde](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md#Invoking-the-command-line-tool-using-Docker) er også tilgjengelig. + +Sendte spørringer kan vises ved hjelp av 'DEBUG' nivåvalget. Advarsel, utdata fra CLI kan være ganske tung. For mer informasjon, se [CLI-brukerdokumentasjon](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md). diff --git a/src/content/faq/nb/reverse-zone.md b/src/content/faq/nb/reverse-zone.md new file mode 100644 index 00000000..332ee229 --- /dev/null +++ b/src/content/faq/nb/reverse-zone.md @@ -0,0 +1,11 @@ +--- +question: Hvordan kan jeg teste en "omvendt" sone med Zonemaster? +category: Bruk av Zonemaster +--- + +For å sjekke en omvendt sone med Zonemaster, må man først vite hva den omvendte sonen er, og skrive den inn i formatet den har i DNS. En omvendt sone oppnås ved å snu en IP-adresse og legge til et suffiks. IPv4-adresser bruker suffikset "in-addr.arpa", mens IPv6-adresser bruker "ip6.arpa". + +Eksempler: + +* for IPv4-prefiks "198.51.100.0/24": 100.51.198.in-addr.arpa +* for IPv6-prefiks "2001:db8::/32": 8.b.d.0.1.0.0.2.ip6.arpa diff --git a/src/content/faq/nb/severity-levels.md b/src/content/faq/nb/severity-levels.md new file mode 100644 index 00000000..18629eab --- /dev/null +++ b/src/content/faq/nb/severity-levels.md @@ -0,0 +1,19 @@ +--- +question: Hva betyr alvorlighetsgradene? +category: Bruk av Zonemaster +--- + +Info +: Meldingen er noe som kan være av interesse for sonens administrator, men som definitivt ikke indikerer et problem. + +Notis +: Meldingen betyr noe som bør være kjent for sonens administrator, men som ikke nødvendigvis er et problem i det hele tatt. + +Advarsel +: Meldingen betyr noe som under noen omstendigheter vil være et problem, men som sannsynligvis ikke vil bli lagt merke til av en tilfeldig bruker. + +Feil +: Meldingen betyr et problem som sannsynligvis (eller muligens sikkert) vil påvirke funksjonen til den testede sonen negativt, men ikke så alvorlig at hele sonen blir uløselig. + +Kritisk +: Meldingen betyr en meget alvorlig feil. diff --git a/src/content/faq/nb/test-case-identifiers.md b/src/content/faq/nb/test-case-identifiers.md new file mode 100644 index 00000000..635c846f --- /dev/null +++ b/src/content/faq/nb/test-case-identifiers.md @@ -0,0 +1,38 @@ +--- +question: Hva er Test Case Identifiers? +category: Bruk av Zonemaster +--- + +Alle testtilfeller tilhører et spesifikt testnivå, og navnene deres er basert på +navnet på dette testnivået. Følgende testnivåer er definert og tilgjengelige: + +- Address +- Basic +- Connectivity +- Consistency +- DNSSEC +- Delegation +- Nameserver +- Syntax +- Zone + +Navnet på testnivået er ikke skilletegnsfølsomt, men de former som er definert ovenfor +må brukes når man refererer til testnivåene, det vil si bare den første bokstaven +stor, unntatt akronymer hvor alle store bokstaver brukes. +For eksempel "Address" og verken "ADDRESS" eller "address". + +Test Case Identifier i test Case Specification (både i hovedoverskriften og i "Test Case Identifier" -avsnittet) bruker testnivånavnet, +som definert ovenfor, og har formatet: `{Testnivånavn} + {Indeks}` + +Når man refererer til et testtilfelle, for lesbarhet, må bokstavfallet definert +ovenfor brukes for testnivånavnet. + +`{Indeks}` er et to-sifret suffiks 01-99, og skal velges slik at +test Case Identifier er unik. Normalt velges det første ledige indeksen. + +Eksempler på test Case Identifiers: + +- Address03 +- Basic04 +- DNSSEC15 +- Zone06 diff --git a/src/content/faq/nb/undelegated.md b/src/content/faq/nb/undelegated.md new file mode 100644 index 00000000..f13aca18 --- /dev/null +++ b/src/content/faq/nb/undelegated.md @@ -0,0 +1,10 @@ +--- +question: Hva er en udelegert domenesjekk? +category: Bruk av Zonemaster +--- + +En udelegert domenesjekk er en sjekk som utføres på et domenenavn som kan, eller ikke kan, være fullstendig publisert i DNS. + +Dette kan være svært nyttig hvis man skal migrere sitt domene fra en registrar/forhandler til en annen, for eksempel migrere sonen 'example.com' fra navnetjeneren 'ns.example.com' til navnetjeneren 'ns.example.org'. I denne scenariet kan man utføre en udelegert domenesjekk ved å gi sonen ('example.com') og navnetjeneren du migrerer til ('ns.example.org') før du migrerer ditt domene. + +Når resultatene av testen ikke viser noen feil eller advarsler, kan man være ganske sikker på at domenets nye plassering fungerer bra. Det kan imidlertid fortsatt være andre problemer i sonedataene selv som denne testen ikke er klar over. diff --git a/src/content/faq/nb/what-is-zonemaster.md b/src/content/faq/nb/what-is-zonemaster.md new file mode 100644 index 00000000..2eec42d5 --- /dev/null +++ b/src/content/faq/nb/what-is-zonemaster.md @@ -0,0 +1,17 @@ +--- +question: Hva er Zonemaster? +category: Generell informasjon +--- + +Zonemaster er et programvarepakke som validerer kvaliteten på en DNS-delegering. + +Ambisjonen til Zonemaster-prosjektet er å utvikle og vedlikeholde et åpent kildekode DNS-valideringsverktøy, som tilbyr forbedret ytelse sammenlignet med eksisterende verktøy og gir omfattende dokumentasjon som kan gjenbrukes av lignende prosjekter i fremtiden. + +Zonemaster består av flere moduler eller komponenter: + +- Engine, et testrammeverk som støtter all funksjonalitet for å utføre DNS-tester; +- CLI, et kommandolinjesnitt til Engine; +- Backend, en server som lar deg kjøre Zonemaster-tester og lagre resultater ved hjelp av en JSON-RPC API og en database; +- GUI, et webgrensesnitt til Backend. + +Komponentene vil hjelpe forskjellige typer brukere til å sjekke en domenes navneservere for konfigurasjonsfeil og generere en rapport som vil hjelpe til med å rette opp feilene. diff --git a/src/content/faq/nb/who-is-behind-zonemaster.md b/src/content/faq/nb/who-is-behind-zonemaster.md new file mode 100644 index 00000000..cfb49213 --- /dev/null +++ b/src/content/faq/nb/who-is-behind-zonemaster.md @@ -0,0 +1,6 @@ +--- +question: Hvem står bak Zonemaster? +category: Generell informasjon +--- + +Zonemaster er et fellesprosjekt mellom [AFNIC](https://www.afnic.fr/en/), registret for ".fr" TLD og flere andre TLD-er som ".re", ".pm", ".tf", ".wf", ".yt" og ".paris", og [The Swedish Internet Foundation](https://internetstiftelsen.se/en/), registret for ".se" og ".nu" TLD-er. diff --git a/src/content/faq/sl/difference.md b/src/content/faq/sl/difference.md new file mode 100644 index 00000000..2efe6254 --- /dev/null +++ b/src/content/faq/sl/difference.md @@ -0,0 +1,10 @@ +--- +question: Kaj loči Zonemaster od drugih programov za preverjanje DNS con? +category: Splošne informacije +--- + +* Zonemaster shrani zgodovino prejšnjih testov na podlagi preverjenega imena domene, kar pomeni, da si lahko ogledate test, ki ste ga izvajali pred časom, in ga primerjate s testom, ki ste ga izvajali sedaj. +* Vsi testi, ki jih izvajaja Zonemaster, so definirani v dokumentih Specifikacij testov, ki jih najdete v [dokumentih Specifikacije testov](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). +* Zonemaster se lahko uporablja za testiranje [nedelegiranih domen](https://zonemaster.net/sl/faq#kaj-je-test-nedelegirane-domene). +* Zonemaster se lahko uporablja za testiranje [DS zapisov pred njihovo objavo v starševski coni](https://zonemaster.net/sl/faq#ali-moram-testirati-ds-zapise-prej-kot-jih-objavijo). +* Ta odprtokodna različica Zonemaster je bila zgrajena modularno, kar pomeni, da lahko integrirate posamezne module v svoje sisteme. diff --git a/src/content/faq/sl/distinguish.md b/src/content/faq/sl/distinguish.md new file mode 100644 index 00000000..c6c6ad1d --- /dev/null +++ b/src/content/faq/sl/distinguish.md @@ -0,0 +1,12 @@ +--- +question: Kako lahko Zonemaster razlikuje med tem, kar je prav in narobe? +category: Splošne informacije +--- + +Zonemaster temelji predvsem na standardih DNS, kot so jih definirali v RFC. Temelji tudi na najboljših praksah DNS, ki lahko niso tako strogo definirane. + +Vsi testi Zonemasterja so definirani v [dokumentih Specifikacij testov](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications), kjer najdete sklicevanje na standardne dokumente za vsak test. + +Opisi ravni sporočil, kot so _OBVESTILO_, _OPOZORILO_ in _NAPAKA_, so v [Definicijah ravni resnosti](https://github.com/zonemaster/zonemaster/blob/master/docs/public/specifications/tests/SeverityLevelDefinitions.md). + +Ponekod so različne interpretacije standardov ali mnenja o najboljših praksah, in ekipa Zonemasterja je vedno odprta za spremembe. Če mislite, da bi zonemaster moral delovati drugače, prosimo, da nam pošljete e-pošto na [zonemaster-users@lists.iis.se](mailto:zonemaster-users@lists.iis.se) (moderiran dopisni seznam) s povezavo do rezultata vašega testa in pojasnilom, zakaj mislite, da bi moral delovati drugače. diff --git a/src/content/faq/sl/dnssec.md b/src/content/faq/sl/dnssec.md new file mode 100644 index 00000000..b6ca7f33 --- /dev/null +++ b/src/content/faq/sl/dnssec.md @@ -0,0 +1,6 @@ +--- +question: Ali Zonemaster preverja DNSSEC? +category: Uporaba Zonemasterja +--- + +Da. Če je DNSSEC na voljo za ime domene, ki ga preverja Zonemaster, bo preverjen samodejno. diff --git a/src/content/faq/sl/ds-records.md b/src/content/faq/sl/ds-records.md new file mode 100644 index 00000000..8bf815fe --- /dev/null +++ b/src/content/faq/sl/ds-records.md @@ -0,0 +1,6 @@ +--- +question: Ali lahko testiram DS zapise pred njihovo objavo? +category: Uporaba Zonemasterja +--- + +Da. Uporabite gumb "Prikaži možnosti" in tam dodajte Delegation Signer (DS) zapise, ki jih želite preveriti. Zonemaster bo nato uporabil te zapise na enak način, kot da so že dodani v starševsko cono. diff --git a/src/content/faq/sl/errors.md b/src/content/faq/sl/errors.md new file mode 100644 index 00000000..bb30048d --- /dev/null +++ b/src/content/faq/sl/errors.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster vrne "Napaka" ali "Opozorilo" za mojo domeno. Kaj pomeni? +category: Uporaba Zonemasterja +--- + +To je odvisno od tega, kateri test za vašo domeno ni uspel. Vsak test ima eno ali več sporočil, ki opisujejo najdene težave. + +Več informacij o vsakem testu lahko dobite iz [dokumentov Specifikacij primerov testov](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). diff --git a/src/content/faq/sl/how-can-zonemaster-help.md b/src/content/faq/sl/how-can-zonemaster-help.md new file mode 100644 index 00000000..1fa10c15 --- /dev/null +++ b/src/content/faq/sl/how-can-zonemaster-help.md @@ -0,0 +1,11 @@ +--- +question: Kako lahko mi Zonemaster pomaga? +category: Splošne informacije +--- + +Orodje Zonemaster lahko pomaga različnim vrstam uporabnikov: + +* Administratorji, strokovnjaki in začetniki DNS, ki želijo preveriti svojo DNS nastavitev; +* uporabniki, ki želijo vedeti, ali imajo njihove domene, kakšne težave ali ne. + +Ostali uporabniki naj kontaktirajo svojega ponudnika DNS, če je za katerikoli test njihove domene kritično, napaka ali opozorilo. diff --git a/src/content/faq/sl/ipv6.md b/src/content/faq/sl/ipv6.md new file mode 100644 index 00000000..44e55f8d --- /dev/null +++ b/src/content/faq/sl/ipv6.md @@ -0,0 +1,6 @@ +--- +question: Ali Zonemaster podpira IPv6? +category: Uporaba Zonemasterja +--- + +Da. Po privzetem bo Zonemaster poizvedoval po strežnikih imen tako preko IPv4 kot tudi IPv6, razen če je to izrecno nastavljeno drugače. Takšna nastavitev je dostopna prek gumba "Prikaži možnosti". diff --git a/src/content/faq/sl/not-tested.md b/src/content/faq/sl/not-tested.md new file mode 100644 index 00000000..86fe4750 --- /dev/null +++ b/src/content/faq/sl/not-tested.md @@ -0,0 +1,12 @@ +--- +question: Zakaj moja domena ne more biti preverjena? +category: Uporaba Zonemasterja +--- + +Obstajajo večje možnosti. + +* Vaša domena še ni delegirana. +* Vaša domena ni dosegljiva iz javnega interneta. +* Zonemaster lahko preveri le tisto, kar je znano kot DNS zona, na primer 'zonemaster.net', in ne ime gostitelja, kot je 'www.zonemaster.net'. +* Obstaja 10-minutna zaščita med zaporednimi testi za določeno ime domene z istimi parametri testi. Izvajanje testa v tem času bo namesto tega prikazalo zadnji dostopni test za to ime domene in parametre. +* Ste napačno napisali ime domene. \ No newline at end of file diff --git a/src/content/faq/sl/privacy.md b/src/content/faq/sl/privacy.md new file mode 100644 index 00000000..bfe04e75 --- /dev/null +++ b/src/content/faq/sl/privacy.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster in zasebnost +category: Splošne informacije +--- + +V bazo podatkov ni shranjeno nič, razen testa domene, drugih parametrov testa in rezultata. Posebej ne shranjujemo nobene informacije, ki bi lahko povezala test z uporabnikom, ki ga je začel. + +Vendar pa, ker je [zonemaster.net](https://zonemaster.net), kot druge javne strani, odprt za vse, je mogoče, da lahko kdorkoli preveri vaše ime domene in si ogleda zgodovino testov. diff --git a/src/content/faq/sl/queries.md b/src/content/faq/sl/queries.md new file mode 100644 index 00000000..b117557d --- /dev/null +++ b/src/content/faq/sl/queries.md @@ -0,0 +1,10 @@ +--- +question: Kateri vrsti DNS poizvedb generira Zonemaster? +category: Splošne informacije +--- + +Zonemaster pošlje več DNS poizvedb na imenske strežnike, ki gostijo domeno. ki se preverja, in tudi na imenske strežnike, ki gostijo nadrejeno cono domene, ki se preverja. + +Vmesnik Zonemasterja ne prikazuje poizvedb, ki so bile poslane, le vmesnik CLI. Če želite videti takšne poizvedbe, boste morali lokalno namestiti delujočo instanco Zonemasterja z obema komponentama, engine in CLI. Poglejte [dokument o namestitvi CLI](https://github.com/zonemaster/zonemaster/blob/master/docs/public/installation/zonemaster-cli.md) za več informacij ali, če radje uporabite [Docker sliko](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md#Invoking-the-command-line-tool-using-Docker), je tudi na voljo. + +Poizvedbe, ki so bile poslane, je mogoče prikazati z možnostjo 'DEBUG'. Opomba: izpisi lahko zelo obremenjujejo CLI. Za več informacij glejte [dokument o uporabi CLI](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md). diff --git a/src/content/faq/sl/reverse-zone.md b/src/content/faq/sl/reverse-zone.md new file mode 100644 index 00000000..4d1ccd33 --- /dev/null +++ b/src/content/faq/sl/reverse-zone.md @@ -0,0 +1,11 @@ +--- +question: Kako lahko preverim "obratno" cono z Zonemasterjem? +category: Uporaba Zonemasterja +--- + +Da bi preverili obratno cono z Zonemasterjem, je najprej potrebno vedeti, kaj je obratna zona, in jo vnesli v format, ki ga ima v DNS. Obratna zona se dobiva z obrnitvijo naslova IP in dodajanjem priponke. Naslovi IPv4 uporabljajo priponko "in-addr.arpa", naslovi IPv6 pa "ip6.arpa". + +Primeri: + +* za IPv4 prefiks "198.51.100.0/24": 100.51.198.in-addr.arpa +* za IPv6 prefiks "2001:db8::/32": 8.b.d.0.1.0.0.2.ip6.arpa \ No newline at end of file diff --git a/src/content/faq/sl/severity-levels.md b/src/content/faq/sl/severity-levels.md new file mode 100644 index 00000000..4eeffc49 --- /dev/null +++ b/src/content/faq/sl/severity-levels.md @@ -0,0 +1,19 @@ +--- +question: Kaj pomenijo ravni resnosti? +category: Uporaba Zonemasterja +--- + +Info +: Sporočilo je nekaj, kar bi lahko zanimalo administratorja zone, vendar definitivno ne kaže na problem. + +Obvestilo +: Sporočilo pomeni nekaj, kar bi moral vedeti administrator zone, vendar ne pomeni nujno problema. + +Opozorilo +: Sporočilo pomeni nekaj, kar bo pod določenimi pogoji problem, vendar je malo verjetno, da ga bo opazil povprečni uporabnik. + +Napaka +: Sporočilo pomeni napako, ki zelo verjetno (ali morda gotovo) negativno vpliva na delovanje preverjene zone, a ni tako resna, da bi postala celotna zona nedelujoča. + +Kritično +: Sporočilo pomeni zelo resno napako. \ No newline at end of file diff --git a/src/content/faq/sl/test-case-identifiers.md b/src/content/faq/sl/test-case-identifiers.md new file mode 100644 index 00000000..5b086123 --- /dev/null +++ b/src/content/faq/sl/test-case-identifiers.md @@ -0,0 +1,31 @@ +--- +question: Kaj so Identifikatorji primerov testov? +category: Uporaba Zonemasterja +--- + +Testi so razporejeni v različne skupine. Njihova imena temeljijo na imenu skupine. Definirane so naslednje skupine testov: + +- Address +- Basic +- Connectivity +- Consistency +- DNSSEC +- Delegation +- Nameserver +- Syntax +- Zone + +Ime skupine testov ni občutljivo na velikost črk, vendar morajo biti uporabljene oblike, kot so definirane zgoraj, ko se sklicujete na skupino testov, to je samo prva črka velika, razen za akronime, ki so pisani z velikimi črkami. + +Identifikator testa v specifikaciji testov uporablja ime skupine testov (definirano zgoraj) in ima format: `{Ime skupine testov} + {Indeks}` + +Ko se sklicujete na test, mora biti za lažjo določitev uporabljena velikost črk, kot je definirana zgoraj za skupino testov. + +`{Indeks}` je dvomestno število 01-99 in mora biti izbrano tako, da je identifikator testa enoličen. Običajno je izbran prvi prost indeks. + +Primeri identifikatorjev testov: + +- Address03 +- Basic04 +- DNSSEC15 +- Zone06 diff --git a/src/content/faq/sl/undelegated.md b/src/content/faq/sl/undelegated.md new file mode 100644 index 00000000..71d59f7f --- /dev/null +++ b/src/content/faq/sl/undelegated.md @@ -0,0 +1,10 @@ +--- +question: Kaj je test nedelegirane domena? +category: Uporaba Zonemasterja +--- + +Test nedelegirane domene je test, ki ga izvedete na domeni, ki je lahko, ali pa ni, objavljena v starševski coni. + +To je uporabno, če nameravate prestaviti svojo domeno od enega DNS ponudnika k drugemu, na primer prestaviti cono 'example.com' iz domenskega strežnika 'ns.test.com' na domenski strežnik 'ns.example.org'. V tej primeru lahko izvedete test nedelegirane domene, kjer podate domeno ('example.com') in domenski strežnik , kamor prestavljate vašo domeno ('ns.example.org'), preden zares prestavite vašo domeno. + +Ko rezultati testov ne prikažejo nobenih napak ali opozoril, lahko z veliko verjetnostjo sklepate, da nova lokacija vaše domene deluje, kot je treba. Lahko pa še vedno obstajajo drugi problemi v podatkih cone, ki jih ta Zonemaster ne pozna. diff --git a/src/content/faq/sl/what-is-zonemaster.md b/src/content/faq/sl/what-is-zonemaster.md new file mode 100644 index 00000000..973dc95d --- /dev/null +++ b/src/content/faq/sl/what-is-zonemaster.md @@ -0,0 +1,17 @@ +--- +question: Kaj je Zonemaster? +category: Splošne informacije +--- + +Zonemaster je programski paket, ki preverja kakovost DNS delegacij. + +Želja projekta Zonemaster je razviti in vzdrževati odprtokodno orodje za preverjanje DNS nastavitev. Zonemaster ponuja boljše delovanje v primerjavi z obstoječimi orodji in ponuja obsežno dokumentacijo, ki bi jo lahko v prihodnosti uporabili podobni projekti. + +Zonemaster sestavlja več modulov ali komponent: + +- Engine, okvir za testiranje, ki podpira vse potrebno za izvajanje DNS testov; +- CLI, ukazna vrstica; +- Splošni del, strežnik, ki omogoča izvajanje testov Zonemaster in shranjevanje rezultatov z uporabo JSON-RPC API in baze podatkov; +- GUI, spletni vmesnik za Splošni del. + +Komponente bodo pomagale različnim vrstam uporabnikov preveriti nastavitve imenskih strežnikov za domeno in generirati poročilo, ki bo pomagalo pri popravljanju napak. diff --git a/src/content/faq/sl/who-is-behind-zonemaster.md b/src/content/faq/sl/who-is-behind-zonemaster.md new file mode 100644 index 00000000..b2d3e1f8 --- /dev/null +++ b/src/content/faq/sl/who-is-behind-zonemaster.md @@ -0,0 +1,6 @@ +--- +question: Kdo je za Zonemasterjem? +category: Splošne informacije +--- + +Zonemaster je skupni projekt med [AFNIC](https://www.afnic.fr/en/), registrom TLD ".fr" in več drugih TLD, kot so ".re", ".pm", ".tf", ".wf", ".yt" in ".paris", in [The Swedish Internet Foundation](https://internetstiftelsen.se/en/), registrom TLD ".se" in ".nu". diff --git a/src/content/faq/sv/difference.md b/src/content/faq/sv/difference.md new file mode 100644 index 00000000..fc6867af --- /dev/null +++ b/src/content/faq/sv/difference.md @@ -0,0 +1,10 @@ +--- +question: Vad skiljer Zonemaster från andra program för kontroll av DNS-zoner? +category: Allmän information +--- + +* Zonemaster sparar all historik från tidigare test av det domännamnet, vilket betyder att du kan gå tillbaka till ett test du gjorde för en tid sedan och jämföra det med testet du körde alldeles nyss. +* Alla test som Zonemaster utför är definierade i dokumenten för testfallspecifikationerna som finns i [Test Case Specification documents](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). +* Zonemaster kan användas för att testa [odelegerade domännamn](https://zonemaster.net/sv/faq#what-is-an-undelegated-domain-test). +* Zonemaster kan användas för att testa [DS-poster innan de publiceras](https://zonemaster.net/sv/faq#can-i-test-the-ds-records-before-they-are-published). +* Denna open source-version av Zonemaster är byggd med modulär kod, vilket i praktiken innebär att du kan integrera delar av den i dina egna system, om du vill. Det är till exempel ganska ovanligt att du skulle vilja ha ett komplett program enbart för att kontrollera redelegeringar. diff --git a/src/content/faq/sv/distinguish.md b/src/content/faq/sv/distinguish.md new file mode 100644 index 00000000..49fc0cd0 --- /dev/null +++ b/src/content/faq/sv/distinguish.md @@ -0,0 +1,12 @@ +--- +question: Hur kan Zonemaster avgöra vad som är rätt och fel? +category: Allmän information +--- + +Zonemasters bedömning baseras främst på DNS-standarderna som definieras i RFC-dokument. Den baserar även sin bedömning på vedertagen praxis inom DNS, vilket kan vara mindre strikt definierad. + +Alla testfall i Zonemaster är definierade i [Test Case Specification documents](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications), där det också finns referenser till relevanta standarddokument för varje testfall. + +Beskrivningar av meddelandenivåer som _NOTERING_, _VARNING_ och _FEL_ finns i [Severity Level Definitions](https://github.com/zonemaster/zonemaster/blob/master/docs/public/specifications/tests/SeverityLevelDefinitions.md). + +Ibland finns det olika tolkningar av standarderna eller olika åsikter om vad som är bästa praxis, och arbetsgruppen för Zonemaster är alltid öppet för synpunkter. Om du anser att vi har gjort ett fel i vår bedömning, tveka inte att skicka ett mejl till [zonemaster-users@lists.iis.se](mailto:zonemaster-users@lists.iis.se) (modererad e-postlista) med en länk till ditt testresultat och en förklaring till varför du anser att det visar något som är felaktigt. diff --git a/src/content/faq/sv/dnssec.md b/src/content/faq/sv/dnssec.md new file mode 100644 index 00000000..267853b2 --- /dev/null +++ b/src/content/faq/sv/dnssec.md @@ -0,0 +1,6 @@ +--- +question: Kontrollerar Zonemaster DNSSEC? +category: Använda Zonemaster +--- + +Ja. Om DNSSEC är tillgängligt för ett domännamn som testas av Zonemaster kommer DNSSEC att kontrolleras automatiskt. diff --git a/src/content/faq/sv/ds-records.md b/src/content/faq/sv/ds-records.md new file mode 100644 index 00000000..b3c20969 --- /dev/null +++ b/src/content/faq/sv/ds-records.md @@ -0,0 +1,6 @@ +--- +question: Kan jag testa DS-poster innan de publiceras? +category: Använda Zonemaster +--- + +Ja. Använd knappen "Visa alternativ" och lägg till de DS-poster ("Delegation Signer") som ska testas. Zonemaster kommer då att använda dem på samma sätt som om de redan var tillagda i moderzonen. diff --git a/src/content/faq/sv/errors.md b/src/content/faq/sv/errors.md new file mode 100644 index 00000000..cb62b679 --- /dev/null +++ b/src/content/faq/sv/errors.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster rapporterar "Fel" eller "Varning" för mitt domännamn. Vad betyder det? +category: Använda Zonemaster +--- + +Det beror på vilket testfall som misslyckades för ditt domännamn. Varje testfall åtföljs av ett eller flera meddelanden som beskriver de problem som hittades. + +Du kan också få ytterligare information om varje testfall från [Test Case Specification documents](https://github.com/zonemaster/zonemaster/tree/master/docs/public/specifications/tests#zonemaster-test-case-specifications). diff --git a/src/content/faq/sv/how-can-zonemaster-help.md b/src/content/faq/sv/how-can-zonemaster-help.md new file mode 100644 index 00000000..b1e04b3d --- /dev/null +++ b/src/content/faq/sv/how-can-zonemaster-help.md @@ -0,0 +1,11 @@ +--- +question: Hur kan Zonemaster hjälpa mig? +category: Allmän information +--- + +Verktyget Zonemaster kan vara till hjälp för olika typer av användare: + +* DNS-administratörer, både experter och nybörjare, som vill kontrollera sin DNS-konfiguration. +* Användare som vill veta om det finns några problem med det domännamn de äger eller använder. + +Användare av den andra typen bör kontakta sin DNS-operatör om det finns fel eller varningar i något test för deras domännamn. diff --git a/src/content/faq/sv/ipv6.md b/src/content/faq/sv/ipv6.md new file mode 100644 index 00000000..9a050633 --- /dev/null +++ b/src/content/faq/sv/ipv6.md @@ -0,0 +1,6 @@ +--- +question: Stöder Zonemaster IPv6? +category: Använda Zonemaster +--- + +Ja. Som standard kommer Zonemaster att skicka förfrågningar till namnservrarna både över IPv4 och IPv6, om det inte valts annorlunda. Sådant val är tillgängligt via knappen "Fler inställningar". diff --git a/src/content/faq/sv/not-tested.md b/src/content/faq/sv/not-tested.md new file mode 100644 index 00000000..2d14c3a1 --- /dev/null +++ b/src/content/faq/sv/not-tested.md @@ -0,0 +1,12 @@ +--- +question: Varför kan mitt domännamn inte testas? +category: Använda Zonemaster +--- + +Det finns flera möjliga orsaker. + +* Ditt domännamn är ännu inte delegerat. +* Ditt domännamn är inte nåbart från det publika Internet. +* Zonemaster kan endast testa det som kallas en DNS-zon, till exempel 'zonemaster.net', och inte ett värdnamn som 'www.zonemaster.net'. +* Det finns en spärr på 10 minuter mellan två test av ett visst domännamn med samma testparametrar. Om ett test körs inom det tidsfönstret visas istället det senaste tillgängliga testet för det domännamnet och parametrarna. +* Du har stavat fel på domännamnet. diff --git a/src/content/faq/sv/privacy.md b/src/content/faq/sv/privacy.md new file mode 100644 index 00000000..c26fb43a --- /dev/null +++ b/src/content/faq/sv/privacy.md @@ -0,0 +1,8 @@ +--- +question: Zonemaster och integritet +category: Allmän information +--- + +Inget annat än domännamnet, övriga testparametrar och testresultatet lagras i databasen. Vi sparar specifikt ingen information som skulle kunna koppla ett test till den användare som initierade det. + +Eftersom [zonemaster.net](https://zonemaster.net), likt andra publika installationer, är öppen för alla, är det dock möjligt för vem som helst att testa ditt domännamn och se dess testhistorik. diff --git a/src/content/faq/sv/queries.md b/src/content/faq/sv/queries.md new file mode 100644 index 00000000..17aa88c9 --- /dev/null +++ b/src/content/faq/sv/queries.md @@ -0,0 +1,10 @@ +--- +question: Vilken typ av DNS-förfrågningar genererar Zonemaster? +category: Allmän information +--- + +Zonemaster skickar ett flertal DNS-förfrågningar till de namnservrar som är värdar för domännamnet som testas, samt till namnservrarna för moderzonen till det domännamnet. + +Webbgränssnittet för Zonemaster visar inte vilka förfrågningar som skickats – det gör endast CLI-programmet. Om du vill se alla förfrågningar måste du installera en minimalt fungerande Zonemaster-instans lokalt med både Engine- och CLI-komponenterna. Se [CLI installation document](https://github.com/zonemaster/zonemaster/blob/master/docs/public/installation/zonemaster-cli.md) för mer information, eller använd ett [Docker-paket](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md#Invoking-the-command-line-tool-using-Docker) om du föredrar det. + +Förfrågningar som skickas kan visas genom att använda alternativet nivå "DEBUG". Observera att utskriften från CLI kan bli ganska omfattande. För mer information, se [CLI usage documentation](https://github.com/zonemaster/zonemaster/blob/master/docs/public/using/cli.md). diff --git a/src/content/faq/sv/reverse-zone.md b/src/content/faq/sv/reverse-zone.md new file mode 100644 index 00000000..3eb34c98 --- /dev/null +++ b/src/content/faq/sv/reverse-zone.md @@ -0,0 +1,11 @@ +--- +question: Hur kan jag testa en reverszon med Zonemaster? +category: Använda Zonemaster +--- + +För att kontrollera en reverszon med Zonemaster behöver du först veta vilken reverszon det gäller och ange den i det format som används i DNS. En reverszon fås genom att vända på en IP-adress och lägga till ett suffix. IPv4-adresser använder suffixet "in-addr.arpa" medan IPv6-adresser använder "ip6.arpa". + +Exempel: + +* för IPv4-prefixet "198.51.100.0/24": 100.51.198.in-addr.arpa +* för IPv6-prefixet "2001:db8::/32": 8.b.d.0.1.0.0.2.ip6.arpa diff --git a/src/content/faq/sv/severity-levels.md b/src/content/faq/sv/severity-levels.md new file mode 100644 index 00000000..69e5f664 --- /dev/null +++ b/src/content/faq/sv/severity-levels.md @@ -0,0 +1,19 @@ +--- +question: Vad betyder allvarlighetsnivåerna? +category: Använda Zonemaster +--- + +Info +: Meddelandet är något som kan vara av intresse för zonens administratör men som definitivt inte indikerar något problem. + +Notering +: Meddelandet betyder något som bör vara känt av zonens administratör men som inte nödvändigtvis utgör ett problem. + +Varning +: Meddelandet betyder något som under vissa omständigheter kan utgöra ett problem, men som sannolikt inte märks av en vanlig användare. + +Fel +: Meddelandet betyder ett problem som med stor sannolikhet (eller möjligen med säkerhet) kommer att påverka funktionen hos den testade zonen negativt, men inte så allvarligt att hela zonen blir olösbar. + +Kritisk +: Meddelandet betyder ett allvarligt fel. diff --git a/src/content/faq/sv/test-case-identifiers.md b/src/content/faq/sv/test-case-identifiers.md new file mode 100644 index 00000000..1741a7a9 --- /dev/null +++ b/src/content/faq/sv/test-case-identifiers.md @@ -0,0 +1,35 @@ +--- +question: Vad är en testfallsidentifierare? +category: Använda Zonemaster +--- + +Alla testfall tillhör en specifik testnivå och deras namn baseras på +namnet för den testnivån. Följande testnivåer är definierade och tillgängliga: + +- Address +- Basic +- Connectivity +- Consistency +- DNSSEC +- Delegation +- Nameserver +- Syntax +- Zone + +Namnet på testnivån är inte skiftlägeskänsligt, men de former som definieras ovan +ska användas när testnivåer refereras till, dvs. endast första bokstaven versal, +förutom för akronymer som skrivs med enbart versaler. +Till exempel "Address" och varken "ADDRESS" eller "address". + +Testfallsidentifieraren i testfallspecifikationen (både i huvudrubriken och i avsnittet "Test case identifier") använder testnivånamnet enligt ovan, och har formatet: `{Testnivånamn} + {Index}` + +Vid referens till ett testfall ska, för läsbarhetens skull, skiftläget för testnivånamnet användas enligt definitionen ovan. + +`{Index}` är ett tvåsiffrigt suffix 01–99 och ska väljas så att testfallsidentifieraren är unik. Normalt väljs det första lediga indexet. + +Exempel på testfallsidentifierare: + +- Address03 +- Basic04 +- DNSSEC15 +- Zone06 diff --git a/src/content/faq/sv/undelegated.md b/src/content/faq/sv/undelegated.md new file mode 100644 index 00000000..47f1afbd --- /dev/null +++ b/src/content/faq/sv/undelegated.md @@ -0,0 +1,10 @@ +--- +question: Vad är ett odelegerat domäntest? +category: Använda Zonemaster +--- + +Ett odelegerat domännamnstest är ett test som utförs på ett domännamn som kanske, eller kanske inte, är fullt publicerat i DNS. + +Detta kan vara mycket användbart om man ska flytta sitt domännamn från en registrar till en annan, till exempel flytta zonen 'example.com' från namnservern 'ns.example.com' till namnservern 'ns.example.org'. I detta scenario kan man utföra ett odelegerat domäntest genom att ange zonen ('example.com') och den namnserver man migrerar till ('ns.example.org') innan själva migreringen av domänen sker. + +När testresultaten inte visar några fel eller varningar kan man vara relativt säker på att domänens nya placering fungerar väl. Det kan dock fortfarande finnas andra problem i zondatan som detta test inte känner till. diff --git a/src/content/faq/sv/what-is-zonemaster.md b/src/content/faq/sv/what-is-zonemaster.md new file mode 100644 index 00000000..fd2ff9e5 --- /dev/null +++ b/src/content/faq/sv/what-is-zonemaster.md @@ -0,0 +1,17 @@ +--- +question: Vad är Zonemaster? +category: Allmän information +--- + +Zonemaster är en progamvara som kontrollerar kvaliteten på en DNS-delegering. + +Ambitionen med Zonemaster-projektet är att utveckla och underhålla ett open source-verktyg för DNS-kontroll, med bättre prestanda än befintliga verktyg och med omfattande dokumentation som kan återanvändas av liknande projekt i framtiden. + +Zonemaster består av flera moduler eller komponenter: + +- Engine, ett test-bibliotek som har all funktionalitet för att utföra DNS-tester. +- CLI, ett kommandoradsgränssnitt till Engine. +- Backend, en server som låter dig köra Zonemaster-tester och spara resultat via ett JSON-RPC API och en databas. +- GUI, ett webbgränssnitt till Backend. + +Komponenterna hjälper olika typer av användare att kontrollera domänservrar efter konfigurationsfel och skapa en rapport som underlättar felsökning. diff --git a/src/content/faq/sv/who-is-behind-zonemaster.md b/src/content/faq/sv/who-is-behind-zonemaster.md new file mode 100644 index 00000000..73567492 --- /dev/null +++ b/src/content/faq/sv/who-is-behind-zonemaster.md @@ -0,0 +1,6 @@ +--- +question: Vem står bakom Zonemaster? +category: Allmän information +--- + +Zonemaster är ett gemensamt projekt mellan [AFNIC](https://www.afnic.fr/en/), registery för toppdomänen ".fr" och flera andra toppdomäner som ".re", ".pm", ".tf", ".wf", ".yt" och ".paris", samt [Internetstiftelsen](https://internetstiftelsen.se), registery för toppdomänerna ".se" och ".nu". diff --git a/src/environments/common.ts b/src/environments/common.ts deleted file mode 100644 index fed97764..00000000 --- a/src/environments/common.ts +++ /dev/null @@ -1,23 +0,0 @@ -// Common values for all environments -// You can override those in environment configuration files - -export const common = { - contactAddress: 'contact@zonemaster.net', - logoUrl: 'assets/images/zonemaster_logo_2021_color.png', - footerLogo: '', - footerLogoAlt: '', - defaultLanguage: 'en', - languages: { - 'da': 'Dansk', - 'en': 'English', - 'es': 'Español', - 'fi': 'Suomi', - 'fr': 'Français', - 'nb': 'Norsk (bokmål)', - 'sl': 'Slovenščina', - 'sv': 'Svenska' - }, - enabledLanguages: [ 'da', 'en', 'es', 'fi', 'fr', 'nb', 'sl', 'sv' ], - configUrl: 'assets/app.config.json', - pollingInterval: 5 * 1000, -} diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts deleted file mode 100644 index b77cf492..00000000 --- a/src/environments/environment.prod.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { common } from "./common"; - -export const environment = { - ...common, - production: true, - apiEndpoint: '/api', - mock: false, - extraProvider: [], -}; diff --git a/src/environments/environment.tests.ts b/src/environments/environment.tests.ts deleted file mode 100644 index cfd8cc98..00000000 --- a/src/environments/environment.tests.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { common } from "./common"; -import { HTTP_INTERCEPTORS } from "@angular/common/http"; -import { HttpMockRequestInterceptor } from "../app/interceptors/mock.interceptor"; - -export const environment = { - ...common, - production: false, - apiEndpoint: 'https://zonemaster.net/api', - mock: true, - // Use a non existent file to always load the config from the environment file - configUrl: 'assets/app.config.non-existent.json', - pollingInterval: 0.1 * 1000, - extraProvider: [ - { - provide: HTTP_INTERCEPTORS, - useClass: HttpMockRequestInterceptor, - multi: true - } - ] -}; diff --git a/src/environments/environment.ts b/src/environments/environment.ts deleted file mode 100644 index 3354051a..00000000 --- a/src/environments/environment.ts +++ /dev/null @@ -1,21 +0,0 @@ -// The file contents for the current environment will overwrite these during build. -// The build system defaults to the dev environment which uses `environment.ts`, but if you do -// `ng build --env=prod` then `environment.prod.ts` will be used instead. -// The list of which env maps to which file can be found in `.angular-cli.json`. -import { common } from "./common"; -import { HttpMockRequestInterceptor } from "../app/interceptors/mock.interceptor"; -import { HTTP_INTERCEPTORS } from "@angular/common/http"; - -export const environment = { - ...common, - production: false, - apiEndpoint: '/api', - mock: true, - extraProvider: [ - { - provide: HTTP_INTERCEPTORS, - useClass: HttpMockRequestInterceptor, - multi: true - } - ] -}; diff --git a/src/environments/version.ts b/src/environments/version.ts deleted file mode 100644 index bd2bca1b..00000000 --- a/src/environments/version.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const clientInfo = { - version: '4.4.0', - id: 'Zonemaster-GUI' -}; diff --git a/src/index.html b/src/index.html deleted file mode 100644 index 4b7fac75..00000000 --- a/src/index.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - Zonemaster - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Loading -
-
- - - - - - diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro new file mode 100644 index 00000000..54df4675 --- /dev/null +++ b/src/layouts/BaseLayout.astro @@ -0,0 +1,100 @@ +--- +import { getLocale } from '@/messages'; +import '@theme/styles/styles.css'; +import '@/assets/fonts/bootstrap-icons.min.css'; +import '@/lib/styles/style.css'; + +interface Props { + title?: string; +} + +const { title: defaultTitle } = Astro.props; +const title = defaultTitle ? `${defaultTitle} – Zonemaster` : `Zonemaster`; +--- + + + + + + + + + + + + + + + + + + + + + {title} + + + + + + diff --git a/src/lib/ClientError.ts b/src/lib/ClientError.ts new file mode 100644 index 00000000..f992494b --- /dev/null +++ b/src/lib/ClientError.ts @@ -0,0 +1,11 @@ +export class ClientError extends Error { + constructor( + message: string, + public readonly code: string, + public readonly data?: any, + ) { + super(message); + + this.name = this.constructor.name; + } +} diff --git a/src/lib/StateMachine.ts b/src/lib/StateMachine.ts new file mode 100644 index 00000000..71afbbe7 --- /dev/null +++ b/src/lib/StateMachine.ts @@ -0,0 +1,94 @@ +type StateConfig = { + on?: Record; + actions?: Record void>; +}; + +type FSMConfig = { + initial: string; + context?: TContext; + states: Record>; +}; + +type TransitionCallback = ( + state: string, + context: TContext, + prevState: string | undefined, +) => void; + +export default class StateMachine { + private readonly states: Record>; + private currentState: string; + private previousState?: string; + public context: TContext; + private subscribers: TransitionCallback[] = []; + public reset: () => void; + + constructor(config: FSMConfig) { + this.states = config.states; + this.currentState = config.initial; + this.previousState = undefined; + this.context = { ...config.context } as TContext; + + this.reset = () => { + this.currentState = config.initial; + this.previousState = undefined; + this.context = config.context || ({} as TContext); + this.notifySubscribers(); + }; + } + + transition(event: string, payload?: any): void { + const stateConfig = this.states[this.currentState]; + const nextState = stateConfig?.on?.[event]; + + if (!nextState) { + throw new Error( + `Invalid transition: ${event} from ${this.currentState}`, + ); + } + + console.log(`${this.currentState} -> ${nextState}`, payload); + + this.previousState = this.currentState; + this.currentState = nextState; + this.context = { ...this.context, ...payload } as TContext; + + if (stateConfig?.actions?.[event]) { + stateConfig.actions[event](this.context, payload); + } + + this.notifySubscribers(); + } + + getState(): string { + return this.currentState; + } + + getPreviousState(): string | undefined { + return this.previousState; + } + + getContext(): TContext { + return this.context; + } + + unsubscribe(callback: TransitionCallback): void { + const index = this.subscribers.indexOf(callback); + + if (index !== -1) { + this.subscribers.splice(index, 1); + } + } + + subscribe(callback: TransitionCallback): () => void { + this.subscribers.push(callback); + + return () => this.unsubscribe(callback); + } + + private notifySubscribers(): void { + for (const callback of this.subscribers) { + callback(this.currentState, this.context, this.previousState); + } + } +} diff --git a/src/lib/TestAgent.ts b/src/lib/TestAgent.ts new file mode 100644 index 00000000..60844eed --- /dev/null +++ b/src/lib/TestAgent.ts @@ -0,0 +1,95 @@ +import { startDomainTest, testProgress } from '@/lib/client.js'; +import StateMachine from '@/lib/StateMachine.ts'; +import config from '@/config.ts'; +import type { ValidationError } from '@/types.ts'; + +type DomainTestContext = { + domain: string | null; + testId: string | null; + progress: number; + error?: + | { + message: string; + code: string; + data?: ValidationError[]; + } + | false; +}; + +export function createTestAgent() { + const TestAgent = new StateMachine({ + initial: 'idle', + context: { + domain: null, + testId: null, + progress: 0, + }, + states: { + idle: { + on: { START: 'testing', ERROR: 'idle' }, + actions: { + START: (context, data) => { + context.domain = data.domain; + context.error = false; + + startDomainTest(data) + .then((testId) => { + context.testId = testId; + TestAgent.transition('PROGRESS', { + progress: 0, + }); + }) + .catch((error) => { + context.error = error; + + TestAgent.transition('ERROR', error); + }); + }, + }, + }, + testing: { + on: { + PROGRESS: 'testing', + COMPLETE: 'complete', + ERROR: 'idle', + }, + actions: { + PROGRESS: (context, payload) => { + context.progress = payload.progress; + + document.title = config.setTitle( + `${payload.progress}% ${context.domain}`, + ); + + if (context.progress >= 100) { + TestAgent.transition('COMPLETE', { progress: 0 }); + } else { + setTimeout(() => { + if ( + context.testId && + TestAgent.getState() === 'testing' + ) { + testProgress(context.testId).then((res) => { + TestAgent.transition('PROGRESS', { + progress: res, + }); + }); + } + }, config.pollingInterval); + } + }, + }, + }, + complete: { + on: { RESET: 'idle' }, + actions: { + RESET: () => { + TestAgent.reset(); + }, + }, + }, + }, + }); + + return TestAgent; +} diff --git a/src/lib/alert.svelte.ts b/src/lib/alert.svelte.ts new file mode 100644 index 00000000..489a29f6 --- /dev/null +++ b/src/lib/alert.svelte.ts @@ -0,0 +1,37 @@ +export type Severity = 'success' | 'info' | 'warning' | 'error'; + +type Alert = { + severity: Severity; + message: string; + id: string; +}; + +function uuid() { + return Math.random().toString(36).substring(2) + Date.now().toString(36); +} + +export let alerts: Alert[] = $state([]); + +export function addAlert(severity: Severity, message: string) { + alerts.push({ severity, message, id: uuid() }); +} + +export function info(message: string) { + addAlert('info', message); +} + +export function warn(message: string) { + addAlert('warning', message); +} + +export function error(message: string) { + addAlert('error', message); +} + +export function success(message: string) { + addAlert('success', message); +} + +export function removeAlert(alert: Alert) { + alerts.splice(alerts.indexOf(alert), 1); +} diff --git a/src/lib/client.ts b/src/lib/client.ts new file mode 100644 index 00000000..b26dc262 --- /dev/null +++ b/src/lib/client.ts @@ -0,0 +1,168 @@ +import config from '@/config.ts'; +import { ClientError } from '@/lib/ClientError.ts'; + +type RpcParams = { + [key: string]: any; +}; + +export let language = () => document.documentElement.lang; + +export async function rpc( + method: string, + params: RpcParams = {}, + guiInfo: boolean = true, +): Promise { + const id = Date.now(); + + if (guiInfo) { + params['client_version'] = config.clientInfo.version; + params['client_id'] = config.clientInfo.id; + } + + const data = { + jsonrpc: '2.0', + id, + method, + params, + }; + + const response = await fetch(config.apiBaseUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }); + + if (!response.ok) { + throw new Error(response.statusText); + } + + const json = await response.json(); + + if (json.error) { + throw new ClientError( + json.error.message, + json.error.code, + json.error.data, + ); + } + + return json.result; +} + +export async function versionInfo(): Promise { + return rpc('version_info', {}, false); +} + +export async function profileNames(): Promise { + return rpc('profile_names', {}, false); +} + +export type Nameservers = { + ns: string; + ip?: string; +}; + +export type DSInfo = { + digest: string; + algorithm: number; + digtype: number; + keytag: number; +}; + +export type StartDomainTestData = { + domain: string; + ipv4?: boolean; + ipv6?: boolean; + nameservers?: Nameservers[]; + ds_info?: DSInfo[]; + profile?: string; + client_id?: string; + client_version?: string; + priority?: number; + queue?: number; + language?: string; +}; + +export type ResultLevel = 'INFO' | 'NOTICE' | 'WARNING' | 'ERROR' | 'CRITICAL'; + +export type ResultDataResult = { + level: ResultLevel; + message: string; + module: string; + testcase: string; +}; + +export type ResultData = { + created_at: string; + hash_id: string; + params: StartDomainTestData; + results: ResultDataResult[]; + testcase_descriptions: Record; +}; + +export async function startDomainTest( + data: StartDomainTestData, +): Promise { + return rpc('start_domain_test', { ...data, language: language() }); +} + +export type TestProgress = { + result: number; +}; + +export async function testProgress(testId: string): Promise { + return rpc('test_progress', { test_id: testId }, false); +} + +export async function getTestResults(testId: string): Promise { + return rpc('get_test_results', { id: testId, language: language() }, false); +} + +export type ParentZoneData = { + ds_list: DSInfo[]; + ns_list: Nameservers[]; +}; + +export async function fetchFromParent(domain: string): Promise { + return rpc( + 'get_data_from_parent_zone', + { + language: language(), + domain, + }, + false, + ); +} + +export type TestHistoryFilter = 'all' | 'delegated' | 'undelegated'; + +export type TestHistoryData = { + domain: string; +}; + +export type TestHistoryItem = { + id: number; + created_at: string; + overall_result: 'ok' | 'warning' | 'error' | 'critical'; + undelegated: boolean; +}; + +export async function getTestHistory( + { domain }: TestHistoryData, + offset: number = 0, + limit: number = 100, + filter: TestHistoryFilter = 'all', +): Promise { + return rpc( + 'get_test_history', + { + offset, + limit, + filter, + frontend_params: { domain }, + }, + false, + ); +} diff --git a/src/lib/components/Alert/Alert.svelte b/src/lib/components/Alert/Alert.svelte new file mode 100644 index 00000000..79c45b68 --- /dev/null +++ b/src/lib/components/Alert/Alert.svelte @@ -0,0 +1,23 @@ + + diff --git a/src/lib/components/Alert/Alerts.svelte b/src/lib/components/Alert/Alerts.svelte new file mode 100644 index 00000000..259202c0 --- /dev/null +++ b/src/lib/components/Alert/Alerts.svelte @@ -0,0 +1,10 @@ + +
+ {#each alerts as { id, message, severity }} + removeAlert(id)}>{message} + {/each} +
diff --git a/src/lib/components/Badge/Badge.svelte b/src/lib/components/Badge/Badge.svelte new file mode 100644 index 00000000..a01fc304 --- /dev/null +++ b/src/lib/components/Badge/Badge.svelte @@ -0,0 +1,23 @@ + + + {@render children?.()} + diff --git a/src/lib/components/Button/Button.svelte b/src/lib/components/Button/Button.svelte new file mode 100644 index 00000000..97ee9f7e --- /dev/null +++ b/src/lib/components/Button/Button.svelte @@ -0,0 +1,40 @@ + + + diff --git a/src/lib/components/ButtonGroup/ButtonGroup.svelte b/src/lib/components/ButtonGroup/ButtonGroup.svelte new file mode 100644 index 00000000..03d6d912 --- /dev/null +++ b/src/lib/components/ButtonGroup/ButtonGroup.svelte @@ -0,0 +1,33 @@ + + +
+ {#each options as option} + + {/each} +
diff --git a/src/lib/components/Collapsible/Collapsible.svelte b/src/lib/components/Collapsible/Collapsible.svelte new file mode 100644 index 00000000..f9262ab3 --- /dev/null +++ b/src/lib/components/Collapsible/Collapsible.svelte @@ -0,0 +1,45 @@ + + diff --git a/src/lib/components/Copy/Copy.svelte b/src/lib/components/Copy/Copy.svelte new file mode 100644 index 00000000..ac22c5ed --- /dev/null +++ b/src/lib/components/Copy/Copy.svelte @@ -0,0 +1,43 @@ + + + diff --git a/src/lib/components/DomainTest/Advanced.svelte b/src/lib/components/DomainTest/Advanced.svelte new file mode 100644 index 00000000..6c92c610 --- /dev/null +++ b/src/lib/components/DomainTest/Advanced.svelte @@ -0,0 +1,18 @@ + + + {m.noticeHeading()}
+ {m.noticeText()} +
+ +
+ +
+ + diff --git a/src/lib/components/DomainTest/DomainTest.svelte b/src/lib/components/DomainTest/DomainTest.svelte new file mode 100644 index 00000000..feeaabb7 --- /dev/null +++ b/src/lib/components/DomainTest/DomainTest.svelte @@ -0,0 +1,128 @@ + + + + +
+ +
+ + + {#if currentState === 'testing'} + {#key currentState} + + {/key} + {/if} +
+ +
+ (advanced = !advanced)} + > + {advanced ? m.hideOptions() : m.showOptions()} + + +
+ + + diff --git a/src/lib/components/DomainTest/General.svelte b/src/lib/components/DomainTest/General.svelte new file mode 100644 index 00000000..0e4a1910 --- /dev/null +++ b/src/lib/components/DomainTest/General.svelte @@ -0,0 +1,52 @@ + + + + +
+ {m.general()} + + + +
+ {#if profiles.length > 1} +
+ + updateNameserver( + i, + 'ns', + e.currentTarget.value, + )} + required={!!ns.ip} + error={getValidationErrorByPath( + currentContext.error, + `/nameservers/${i}/ns`, + )} + /> +
+
+ + updateNameserver( + i, + 'ip', + e.currentTarget.value, + )} + error={getValidationErrorByPath( + currentContext.error, + `/nameservers/${i}/ip`, + )} + /> +
+
+ {#if nameservers.length > 1} +
+ + +
+ {/if} +
+ + {/each} + + + diff --git a/src/lib/components/DomainTest/Records.svelte b/src/lib/components/DomainTest/Records.svelte new file mode 100644 index 00000000..31f85107 --- /dev/null +++ b/src/lib/components/DomainTest/Records.svelte @@ -0,0 +1,184 @@ + +
+ {m.DSRecords()} + + {#each records as r, i} +
+ {m.dsRecord({ index: i + 1 })} + + +
+ updateRow(i, 'keytag', e.currentTarget.value)} + error={getValidationErrorByPath(currentContext.error, `/ds_info/${i}/keytag`)} + /> +
+
+ updateRow(i, 'digestType', e.currentTarget.value)} + options={digestTypes} + /> +
+
+ updateRow(i, 'digest', e.currentTarget.value)} + error={getValidationErrorByPath(currentContext.error, `/ds_info/${i}/digest`)} + /> +
+
+ {#if records.length > 1} +
+ + +
+ {/if} +
+
+ {/each} + +
+
diff --git a/src/lib/components/DomainTest/Result.svelte b/src/lib/components/DomainTest/Result.svelte new file mode 100644 index 00000000..20b9d478 --- /dev/null +++ b/src/lib/components/DomainTest/Result.svelte @@ -0,0 +1,43 @@ + +{#if id && loading} + Loading result... +{/if} +{#if id && result} + {#key id} + + {/key} +{/if} diff --git a/src/lib/components/DomainTest/ResultGroup.svelte b/src/lib/components/DomainTest/ResultGroup.svelte new file mode 100644 index 00000000..14aff03c --- /dev/null +++ b/src/lib/components/DomainTest/ResultGroup.svelte @@ -0,0 +1,57 @@ + + +
+ {#if testcase !== 'Unspecified' && testcase in descriptions} +
+

+ + {#if data && open} + + + {niceName(testcase)} + + {/if} +

+
+ {/if} + {#if data && open} +
+
    + {#each data.entries as result} +
  • +
    + + {niceName(result.level)} + +
    +

    {result.message}

    +
  • + {/each} +
+
+ {/if} +
diff --git a/src/lib/components/DomainTest/ResultInfo.svelte b/src/lib/components/DomainTest/ResultInfo.svelte new file mode 100644 index 00000000..3c1ad6e7 --- /dev/null +++ b/src/lib/components/DomainTest/ResultInfo.svelte @@ -0,0 +1,385 @@ + + +
+

{m.testResultFor()} {data.params.domain}

+ +
+ {m.createdOn()} + +
+ +
+ + +
+ +
+ + +
+
+ + +
+
+
+ +
+ {m.filterSeverityLevels()} + + + + + + + + +
+ {#if aboutLevels} + + {/if} +
+
+ +
+ + +
+ + {#each result.modules as module} + {#key module} + + {/key} + {/each} + +
+
diff --git a/src/lib/components/DomainTest/ResultModule.svelte b/src/lib/components/DomainTest/ResultModule.svelte new file mode 100644 index 00000000..ba2bde7d --- /dev/null +++ b/src/lib/components/DomainTest/ResultModule.svelte @@ -0,0 +1,47 @@ + + +
+

+ +

+ {#if open} +
+ + {#each Object.entries(data.testcasesMap) as [testcase, d]} + + {/each} + +
+ {/if} +
diff --git a/src/lib/components/DomainTest/store.svelte.ts b/src/lib/components/DomainTest/store.svelte.ts new file mode 100644 index 00000000..703d47de --- /dev/null +++ b/src/lib/components/DomainTest/store.svelte.ts @@ -0,0 +1,33 @@ +import type { ResultLevel } from '@/lib/client.ts'; + +export let expandedModules: Record = $state({}); +export let filter: { + levels: Record; + query: string; +} = $state({ + levels: { + ALL: true, + INFO: false, + NOTICE: false, + WARNING: false, + ERROR: false, + CRITICAL: false, + }, + query: '', +}); + +export function toggleModule(module: string) { + expandedModules[module] = !expandedModules[module]; +} + +export function expandAll(modules: string[]) { + modules.forEach((module) => { + expandedModules[module] = true; + }); +} + +export function collapseAll(modules: string[]) { + modules.forEach((module) => { + expandedModules[module] = false; + }); +} diff --git a/src/lib/components/FilterToggle/FilterToggle.svelte b/src/lib/components/FilterToggle/FilterToggle.svelte new file mode 100644 index 00000000..b899474d --- /dev/null +++ b/src/lib/components/FilterToggle/FilterToggle.svelte @@ -0,0 +1,34 @@ + + diff --git a/src/lib/components/Grid/Grid.svelte b/src/lib/components/Grid/Grid.svelte new file mode 100644 index 00000000..a2786f9e --- /dev/null +++ b/src/lib/components/Grid/Grid.svelte @@ -0,0 +1,15 @@ + + +
+ {@render children?.()} +
diff --git a/src/lib/components/Input/Input.svelte b/src/lib/components/Input/Input.svelte new file mode 100644 index 00000000..e9c54686 --- /dev/null +++ b/src/lib/components/Input/Input.svelte @@ -0,0 +1,72 @@ + + +{#if label} + +{/if} + +{#if error} +
{error}
+{/if} diff --git a/src/lib/components/ProgramVersions/ProgramVersions.svelte b/src/lib/components/ProgramVersions/ProgramVersions.svelte new file mode 100644 index 00000000..ce9607ca --- /dev/null +++ b/src/lib/components/ProgramVersions/ProgramVersions.svelte @@ -0,0 +1,46 @@ + + + +{#if loading} +

Loading...

+{:else} + version = !version}> + {m.programVersions()} + + +{/if} + diff --git a/src/lib/components/Route/Route.svelte b/src/lib/components/Route/Route.svelte new file mode 100644 index 00000000..1592cde1 --- /dev/null +++ b/src/lib/components/Route/Route.svelte @@ -0,0 +1,20 @@ + + +{#if match} + {@render children?.()} +{/if} diff --git a/src/lib/components/Select/Select.svelte b/src/lib/components/Select/Select.svelte new file mode 100644 index 00000000..35b4078d --- /dev/null +++ b/src/lib/components/Select/Select.svelte @@ -0,0 +1,33 @@ + + +{#if label} + +{/if} + \ No newline at end of file diff --git a/src/lib/components/Stack/Stack.svelte b/src/lib/components/Stack/Stack.svelte new file mode 100644 index 00000000..63e50442 --- /dev/null +++ b/src/lib/components/Stack/Stack.svelte @@ -0,0 +1,59 @@ + + +
+ {@render children?.()} +
diff --git a/src/lib/components/Stack/stack.module.css b/src/lib/components/Stack/stack.module.css new file mode 100644 index 00000000..5f3848af --- /dev/null +++ b/src/lib/components/Stack/stack.module.css @@ -0,0 +1,121 @@ +.stack { + display: flex; + gap: var(--gap); +} + +.wrap { + flex-wrap: wrap; +} + +.vertical { + flex-direction: column; +} + +/** + * =Horizontal Stack + * ==================================== */ +.stack:not(.vertical).bottom { + align-items: flex-end; +} + +.stack:not(.vertical).middle { + align-items: center; +} + +.stack:not(.vertical).top { + align-items: flex-start; +} + +.stack:not(.vertical).left { + justify-content: flex-start; +} + +.stack:not(.vertical).center { + justify-content: center; +} + +.stack:not(.vertical).right { + justify-content: flex-end; +} + +.stack:not(.vertical).spaceBetween { + justify-content: space-between; +} + +.stack:not(.vertical).reverse { + flex-direction: row-reverse; +} + +/** + * =Vertical Stack + * ==================================== */ +.vertical.bottom { + justify-content: flex-end; +} + +.vertical.middle { + justify-content: center; +} + +.vertical.top { + justify-content: flex-start; +} + +.vertical.left { + align-items: flex-start; +} + +.vertical.center { + align-items: center; +} + +.vertical.right { + align-items: flex-end; +} + +.vertical.reverse { + flex-direction: column-reverse; +} + +.gap { + --gap: var(--spacing-default); +} + +.gap--xxs { + --gap: var(--spacing-xxs); +} + +.gap--xs { + --gap: var(--spacing-xs); +} + +.gap--s { + --gap: var(--spacing-s); +} + +.gap--m { + --gap: var(--spacing-m); +} + +.gap--l { + --gap: var(--spacing-l); +} + +.gap--xl { + --gap: var(--spacing-xl); +} + +.gap--xxl { + --gap: var(--spacing-xxl); +} + +/** + * =Items + * ==================================== */ +.expand { + flex: 1; + + @media screen and (max-width: 568px) { + flex-basis: 100%; + } +} diff --git a/src/lib/components/Switch/Switch.svelte b/src/lib/components/Switch/Switch.svelte new file mode 100644 index 00000000..11aee6a6 --- /dev/null +++ b/src/lib/components/Switch/Switch.svelte @@ -0,0 +1,28 @@ + +
+ + +
diff --git a/src/lib/export.ts b/src/lib/export.ts new file mode 100644 index 00000000..ff447a34 --- /dev/null +++ b/src/lib/export.ts @@ -0,0 +1,170 @@ +import type { ResultData, ResultLevel } from '@/lib/client.ts'; +import { toASCII } from 'punycode'; + +const language = 'en'; +const header = ['Module', 'Level', 'Message']; + +function convertTo(objArray: string | any[], extension: string) { + const array = + typeof objArray !== 'object' ? JSON.parse(objArray) : objArray; + let str = ''; + let row = ''; + + for (const indexObj of header) { + if (extension === 'csv') { + row += indexObj + ';'; + } else { + row += indexObj + ' \t'; + } + } + row = row.slice(0, -1); + str += row + '\r\n'; + + for (let i = 1; i < array.length; i++) { + let line = ''; + for (const index of header) { + if (line !== '') { + if (extension === 'csv') { + line += ';'; + } else { + line += ' \t'; + } + } + line += array[i][index.toLowerCase()].trim(); + } + str += line + '\r\n'; + } + return str; +} + +function asciiDomain(domain: string): string { + return toASCII(domain); +} + +function exportedName(extension: string, id: string, domain: string): string { + return `zonemaster_result_${asciiDomain(domain)}_${id}.${extension}`; +} + +function saveAs(blob: Blob, name: string) { + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + + a.href = url; + a.download = name; + a.click(); + URL.revokeObjectURL(url); +} + +function getModuleName(module: string): string { + return module; +} + +function severityLevelNames(level: ResultLevel): string { + return level.toLowerCase(); +} + +function formatDate(date: string): string { + return new Date(date).toLocaleString(); +} + +export function exportJson(data: ResultData) { + const blob = new Blob([JSON.stringify(data.results)], { + type: 'application/javascript', + }); + + saveAs(blob, exportedName('json', data.hash_id, data.params.domain)); +} + +export function exportHTML(data: ResultData) { + let tbodyContent = ''; + for (let item of data.results) { + tbodyContent += ` + + ${getModuleName(item.module)} + ${severityLevelNames(item.level)} + ${item.message} + + `; + } + + const result = ` + + + + + + ${data.params.domain} • Zonemaster Test Result + + + +
+

${data.params.domain}

${formatDate(data.created_at)} +
+ + + + + + + + + + ${tbodyContent} + +
ModuleLevelMessage
+ + + `; + + const blob = new Blob([result], { + type: 'text/html;charset=utf-8', + }); + + saveAs(blob, exportedName('html', data.hash_id, data.params.domain)); +} + +export function exportText(data: ResultData) { + const csvData = convertTo([...data.results].slice(0), 'txt'); + const blob = new Blob([csvData], { + type: 'text/plain;charset=utf-8', + }); + + saveAs(blob, exportedName('txt', data.hash_id, data.params.domain)); +} + +export function exportCSV(data: ResultData) { + const csvData = convertTo([...data.results].slice(0), 'csv'); + const blob = new Blob([csvData], { + type: 'text/csv;charset=utf-8', + }); + saveAs(blob, exportedName('csv', data.hash_id, data.params.domain)); +} diff --git a/src/lib/formToObj.ts b/src/lib/formToObj.ts new file mode 100644 index 00000000..8b08b20e --- /dev/null +++ b/src/lib/formToObj.ts @@ -0,0 +1,82 @@ +/** + * Converts form data to a nested JavaScript object. + * Supports arbitrarily nested form fields using bracket notation. + * Example: input name="user[address][city]" becomes { user: { address: { city: value } } } + * Skips empty string values, removing them from the result. + */ +export default function formToObj(element: HTMLFormElement) { + const formData = new FormData(element); + const result = {}; + + formData.forEach((value, key) => { + // Skip empty string values + if (typeof value === 'string' && value.trim() === '') { + return; + } + + // Parse the key path + const path = parsePath(key); + + // Set the value at the specified path + setValueAtPath(result, path, value); + }); + + return result; +} + +/** + * Parses a form field name into an array of path segments. + * Example: "user[address][city]" becomes ["user", "address", "city"] + */ +function parsePath(key: string): string[] { + // Match the base key and any bracketed parts + const matches = key.match(/[^\[\]]+/g); + return matches || [key]; +} + +/** + * Sets a value at the specified path in an object, creating intermediate objects/arrays as needed. + */ +function setValueAtPath( + obj: Record, + path: string[], + value: any, +): void { + // Handle empty path (shouldn't happen, but just in case) + if (path.length === 0) return; + + // For single-segment path, just set the value directly + if (path.length === 1) { + obj[path[0]] = value; + return; + } + + // Get the current segment and determine if the next segment is numeric + const currentSegment = path[0]; + const nextSegment = path[1]; + const isNextNumeric = !isNaN(parseInt(nextSegment, 10)); + + // Initialize the current level if needed + if (obj[currentSegment] === undefined) { + obj[currentSegment] = isNextNumeric ? [] : {}; + } + + // Handle array case specially to ensure we have the right structure + if (isNextNumeric) { + const index = parseInt(nextSegment, 10); + + // Ensure the array has the right length + if ( + Array.isArray(obj[currentSegment]) && + obj[currentSegment].length <= index + ) { + // Fill any gaps in the array with empty objects + for (let i = obj[currentSegment].length; i <= index; i++) { + obj[currentSegment][i] = {}; + } + } + } + + // Recurse with the rest of the path + setValueAtPath(obj[currentSegment], path.slice(1), value); +} diff --git a/src/lib/formatDate.ts b/src/lib/formatDate.ts new file mode 100644 index 00000000..42a9e684 --- /dev/null +++ b/src/lib/formatDate.ts @@ -0,0 +1,20 @@ +export function formatDate(iso: string): string { + const d = new Date(iso); + if (isNaN(d.getTime())) return iso; + + const pad = (n: number) => String(n).padStart(2, '0'); + + const year = d.getFullYear(); + const month = pad(d.getMonth() + 1); + const day = pad(d.getDate()); + const hours = pad(d.getHours()); + const minutes = pad(d.getMinutes()); + + const offsetMin = -d.getTimezoneOffset(); // minutes east of UTC + const sign = offsetMin >= 0 ? '+' : '-'; + const abs = Math.abs(offsetMin); + const offH = pad(Math.floor(abs / 60)); + const offM = pad(abs % 60); + + return `${year}-${month}-${day} ${hours}:${minutes} GMT${sign}${offH}:${offM}`; +} diff --git a/src/lib/getValidationErrorByPath.ts b/src/lib/getValidationErrorByPath.ts new file mode 100644 index 00000000..a55d55e2 --- /dev/null +++ b/src/lib/getValidationErrorByPath.ts @@ -0,0 +1,12 @@ +export function getValidationErrorByPath( + error: any, + path: string, +): string | false { + if (!error || !error.data || !Array.isArray(error.data)) { + return false; + } + + return ( + error.data.find((error: any) => error.path === path)?.message || false + ); +} diff --git a/src/lib/groupResult.ts b/src/lib/groupResult.ts new file mode 100644 index 00000000..9f327905 --- /dev/null +++ b/src/lib/groupResult.ts @@ -0,0 +1,114 @@ +import type { ResultDataResult, ResultLevel } from '@/lib/client.ts'; +import type { Module, ModuleSummary } from '@/types.ts'; + +const severityLevels: Record = { + INFO: 0, + NOTICE: 1, + WARNING: 2, + ERROR: 3, + CRITICAL: 4, +}; + +export function groupResult(results: ResultDataResult[]) { + const testCasesCount: Record = { + ALL: 0, + INFO: 0, + NOTICE: 0, + WARNING: 0, + ERROR: 0, + CRITICAL: 0, + }; + const moduleSummary: ModuleSummary = {}; + + const modules = []; + const modulesMap: Record = {}; + + for (const entry of results) { + const currentModule = entry.module; + const currentTestcase = entry.testcase; + const currentLevel = entry.level; + const numLevel = severityLevels[entry.level]; + + if (!(currentModule in modulesMap)) { + modulesMap[currentModule] = { + name: currentModule, + testcases: [], + testcasesMap: {}, + }; + + modules.push(modulesMap[currentModule]); + } + + if (!(currentTestcase in modulesMap[currentModule].testcasesMap)) { + modulesMap[currentModule].testcasesMap[currentTestcase] = { + id: currentTestcase, + entries: [], + level: 'INFO', + }; + + modulesMap[currentModule].testcases.push( + modulesMap[currentModule].testcasesMap[currentTestcase], + ); + } + + modulesMap[currentModule].testcasesMap[currentTestcase].entries.push( + entry, + ); + + if ( + numLevel > + severityLevels[ + modulesMap[currentModule].testcasesMap[currentTestcase].level + ] + ) { + modulesMap[currentModule].testcasesMap[currentTestcase].level = + currentLevel; + } + } + + for (const module in modulesMap) { + modulesMap[module].testcases.sort((testcase1, testcase2) => { + // sort messages by descending severity level, unspecified messages always on top + if (testcase1.id.toUpperCase() == 'UNSPECIFIED') { + return 1; + } + if (testcase2.id.toUpperCase() == 'UNSPECIFIED') { + return 1; + } + return ( + severityLevels[testcase2.level] - + severityLevels[testcase1.level] + ); + }); + + moduleSummary[module] = Object.entries( + Object.groupBy(modulesMap[module].testcases, ({ level }) => level), + ).map(([level, entries]) => ({ + level: level as ResultLevel, + count: entries.length, + })); + + for (const testcase in modulesMap[module].testcasesMap) { + const level = modulesMap[module].testcasesMap[testcase].level; + + testCasesCount[level]++; + testCasesCount['ALL']++; + + modulesMap[module].testcasesMap[testcase].entries.sort( + (msg1, msg2) => { + // sort messages by descending severity level + return ( + severityLevels[msg2.level] - severityLevels[msg1.level] + ); + }, + ); + } + } + + return { + counts: testCasesCount, + moduleSummary, + modulesMap, + modules, + }; +} diff --git a/src/lib/machine.svelte.ts b/src/lib/machine.svelte.ts new file mode 100644 index 00000000..db940451 --- /dev/null +++ b/src/lib/machine.svelte.ts @@ -0,0 +1,23 @@ +import { createTestAgent } from '@/lib/TestAgent.ts'; + +const agent = createTestAgent(); + +export const machine = $state({ + currentState: agent.getState(), + currentContext: agent.getContext(), + previousState: agent.getPreviousState(), +}); + +$effect.root(() => { + $effect(() => { + return agent.subscribe((s, c, p) => { + machine.currentState = s; + machine.currentContext = c; + machine.previousState = p; + }); + }); +}); + +export function transition(event: string, payload?: any): void { + agent.transition(event, payload); +} diff --git a/src/lib/main.ts b/src/lib/main.ts new file mode 100644 index 00000000..97fd14fd --- /dev/null +++ b/src/lib/main.ts @@ -0,0 +1,16 @@ +import DomainTest from './components/DomainTest/DomainTest.svelte'; +import ProgramVersions from './components/ProgramVersions/ProgramVersions.svelte'; +import { createTestAgent } from './TestAgent.ts'; +import { setApiBaseUrl, setPollingInterval } from '@/config.ts'; +import * as client from './client.ts'; +import './styles/style.css'; + +if (window?.zonemaster?.apiEndpoint) { + setApiBaseUrl(window.zonemaster.apiEndpoint); +} + +if (window?.zonemaster?.pollingInterval) { + setPollingInterval(window.zonemaster.pollingInterval); +} + +export { DomainTest, ProgramVersions, createTestAgent, client }; diff --git a/src/lib/niceName.ts b/src/lib/niceName.ts new file mode 100644 index 00000000..81252dd2 --- /dev/null +++ b/src/lib/niceName.ts @@ -0,0 +1,6 @@ +// Lowercase and capitalize +export default function niceName(name: string): string { + const [first, ...rest] = name.toLowerCase(); + + return first.toUpperCase() + rest.join(''); +} diff --git a/src/lib/resultIcon.ts b/src/lib/resultIcon.ts new file mode 100644 index 00000000..50314fa4 --- /dev/null +++ b/src/lib/resultIcon.ts @@ -0,0 +1,13 @@ +import type { ResultLevel } from '@/lib/client.ts'; + +const icons: Record = { + INFO: 'check-circle-fill', + NOTICE: 'exclamation-circle-fill', + WARNING: 'exclamation-triangle-fill', + ERROR: 'x-circle-fill', + CRITICAL: 'x-octagon-fill', +}; + +export function resultIcon(level: ResultLevel) { + return icons[level] || 'question-circle-fill'; +} diff --git a/src/lib/router.svelte.ts b/src/lib/router.svelte.ts new file mode 100644 index 00000000..7b8c4fff --- /dev/null +++ b/src/lib/router.svelte.ts @@ -0,0 +1,18 @@ +export let location = $state({ + pathname: '', +}); + +$effect.root(() => { + $effect(() => { + location.pathname = window.location.pathname; + + window.addEventListener('popstate', () => { + location.pathname = window.location.pathname; + }); + }); +}); + +export function navigate(path: string): void { + window.history.pushState(null, '', path); + location.pathname = path; +} diff --git a/src/lib/styles/colors.css b/src/lib/styles/colors.css new file mode 100644 index 00000000..3ea97427 --- /dev/null +++ b/src/lib/styles/colors.css @@ -0,0 +1,19 @@ +.zm-bg-info { + background: var(--color-palette-success-50); +} + +.zm-bg-notice { + background: var(--color-palette-info-50); +} + +.zm-bg-warning { + background: var(--color-palette-warning-50); +} + +.zm-bg-error { + background: var(--color-palette-error-50); +} + +.zm-bg-critical { + background: var(--color-palette-error-70); +} diff --git a/src/lib/styles/components/alert.css b/src/lib/styles/components/alert.css new file mode 100644 index 00000000..b376f5e9 --- /dev/null +++ b/src/lib/styles/components/alert.css @@ -0,0 +1,48 @@ +.zm-alert { + --alert-bg: var(--color-palette-info-10); + --alert-border: var(--color-palette-info-50); + --alert-text-color: var(--color-palette-info-90); + + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--spacing-s); + background: var(--alert-bg); + border: 1px solid var(--alert-border); + border-radius: var(--border-radius); + color: var(--alert-text-color); + + p:last-child { + margin-bottom: 0; + } + + a { + font-weight: var(--font-heading-weight); + } +} + +.zm-alert--success { + --alert-bg: var(--color-palette-success-10); + --alert-border: var(--color-palette-success-50); + --alert-text-color: var(--color-palette-success-90); +} + +.zm-alert--warning { + --alert-bg: var(--color-palette-warning-10); + --alert-border: var(--color-palette-warning-50); + --alert-text-color: var(--color-palette-warning-90); +} + +.zm-alert--error { + --alert-bg: var(--color-palette-danger-10); + --alert-border: var(--color-palette-danger-50); + --alert-text-color: var(--color-palette-danger-90); +} + +.zm-alert--centered { + p { + text-align: center; + width: 100%; + max-width: none; + } +} diff --git a/src/lib/styles/components/badge.css b/src/lib/styles/components/badge.css new file mode 100644 index 00000000..782d6ec3 --- /dev/null +++ b/src/lib/styles/components/badge.css @@ -0,0 +1,82 @@ +.zm-badge { + background: var(--color-muted); + color: var(--color-palette-white); + font-size: calc(var(--font-xs) * 1.2); + border-radius: var(--border-radius); + display: inline-flex; + align-items: center; + gap: var(--spacing-xxs); + justify-content: center; + font-weight: 700; + text-decoration: none; + line-height: 1; + padding: var(--spacing-xxs) var(--spacing-xs); + text-shadow: 0 0 5px var(--badge-color-dark); + + &.zm-bg-default { + background: var(--color-palette-info-10); + color: var(--color-muted); + + &.zm-badge--border { + border: 1px solid var(--color-palette-info-30); + } + } + + &.zm-bg-info { + background: var(--color-palette-success-50); + --badge-color-dark: var(--color-palette-success-70); + } + + &.zm-bg-notice { + background: var(--color-palette-info-50); + --badge-color-dark: var(--color-palette-info-70); + } + + &.zm-bg-warning { + background: var(--color-palette-warning-50); + color: var(--color-palette-black); + --badge-color-dark: ''; + } + + &.zm-bg-error { + background: var(--color-palette-error-50); + --badge-color-dark: var(--color-palette-error-70); + } + + &.zm-bg-critical { + background: var(--color-palette-error-70); + --badge-color-dark: ''; + } + + &.zm-badge--round { + border-radius: 9999px; + font-size: var(--font-xs); + + &.zm-bg-info { + background: var(--color-palette-success-70); + } + + &.zm-bg-notice { + background: var(--color-palette-info-70); + } + + &.zm-bg-warning { + background: var(--color-palette-warning-70); + color: var(--color-palette-white); + } + + &.zm-bg-error { + background: var(--color-palette-error-70); + } + + &.zm-bg-critical { + background: var(--color-palette-error-90); + } + } + + &.zm-badge--small { + font-size: var(--font-xs); + padding: var(--spacing-xxs) var(--spacing-xs); + border-radius: calc(var(--border-radius) / 2); + } +} diff --git a/src/lib/styles/components/button-group.css b/src/lib/styles/components/button-group.css new file mode 100644 index 00000000..0b941a84 --- /dev/null +++ b/src/lib/styles/components/button-group.css @@ -0,0 +1,61 @@ +.zm-button-group { + display: inline-flex; + overflow: hidden; +} + +.zm-button-group__button { + all: unset; + position: relative; + display: inline-flex; + padding: 0 var(--button-padding); + align-items: center; + justify-content: center; + gap: var(--spacing-xs); + height: var(--button-size-small); + background-color: var(--button-secondary-color); + border: 1px solid var(--button-secondary-border-color); + text-decoration: none; + color: var(--button-secondary-text-color); + font-size: var(--button-font-size-small); + font-weight: 700; + line-height: 1; + white-space: nowrap; + cursor: pointer; + margin: 0; + border-radius: 0; + flex: 1; +} + +.zm-button-group__button:hover, +.zm-button-group__button:focus { + color: var(--button-secondary-text-color-hover); + background-color: var(--button-secondary-color-hover); + border-color: var(--button-secondary-border-hover-color); +} + +.zm-button-group__button:first-child { + border-top-left-radius: var(--border-radius); + border-bottom-left-radius: var(--border-radius); +} + +.zm-button-group__button:not(:last-child) { + border-right: none; +} + +.zm-button-group__button:last-child { + border-top-right-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); +} + +.zm-button-group__button--active { + background-color: var(--button-color); + border-color: var(--button-border-color); + color: var(--button-text-color); + + &:hover, + &:focus { + color: var(--button-text-color); + background-color: var(--button-color-hover); + border-color: var(--button-secondary-border-hover-color); + } +} diff --git a/src/lib/styles/components/button.css b/src/lib/styles/components/button.css new file mode 100644 index 00000000..214ac38d --- /dev/null +++ b/src/lib/styles/components/button.css @@ -0,0 +1,81 @@ +.zm-button { + position: relative; + display: inline-flex; + padding: 0 var(--button-padding); + align-items: center; + justify-content: center; + gap: var(--spacing-xs); + height: var(--button-size); + border: 1px solid var(--button-border-color); + border-radius: var(--border-radius); + background-color: var(--button-color); + text-decoration: none; + color: var(--button-text-color); + font-size: var(--button-font-size); + font-weight: 700; + line-height: 1; + white-space: nowrap; + cursor: pointer; + + &:hover, + &:focus { + background-color: var(--color-palette-main-70); + border-color: var(--color-palette-main-70); + color: var(--button-text-color-hover); + } + + &[disabled], + &[disabled]:focus, + &[disabled]:hover { + background: var(--color-disabled); + color: var(--color-muted-text); + border-color: var(--button-border-color-disabled); + text-shadow: 0 1px 0 var(--color-palette-black-0); + cursor: not-allowed; + } +} + +.zm-button--secondary { + background: var(--button-secondary-color); + border-color: var(--button-secondary-border-color); + color: var(--button-secondary-text-color); + + &:hover, + &:focus { + background: var(--button-secondary-color-hover); + border-color: var(--button-secondary-border-hover-color); + color: var(--button-secondary-text-color-hover); + } +} + +.zm-button--danger { + background: var(--color-palette-danger-50); + border-color: var(--color-palette-danger-50); + color: var(--color-palette-white); + + &:hover, + &:focus { + background-color: var(--color-palette-danger-70); + border-color: var(--color-palette-danger-70); + } +} + +.zm-button--small { + font-size: var(--button-font-size-small); + height: var(--button-size-small); +} + +.zm-button--transparent { + background: transparent; + border-color: transparent; + color: var(--color-palette-black); + padding-left: 0; + padding-right: 0; + + &:hover, + &:focus { + background-color: transparent; + border-color: transparent; + color: var(--color-palette-main-70); + } +} diff --git a/src/lib/styles/components/collapsible.css b/src/lib/styles/components/collapsible.css new file mode 100644 index 00000000..44308775 --- /dev/null +++ b/src/lib/styles/components/collapsible.css @@ -0,0 +1,47 @@ +.zm-collapsible { + overflow: hidden; + border: 1px solid var(--color-palette-secondary-30); + border-radius: var(--border-radius); + background-color: var(--color-palette-secondary-10); + margin-top: calc(var(--rhythm) / 2); + margin-block-start: calc(var(--rhythm) / 2); + + &:first-child { + margin-block-start: calc(var(--rhythm) / 2); + } +; + + header { + padding: var(--spacing-s); + } + + h2 { + margin-bottom: 0; + font-size: var(--font-s); + } + + p, + ul, + ol, + h2, + h3, + h4, + h6, + h6 { + max-width: 60ch; + } + + [aria-hidden='true'] { + display: none; + } +} + +.zm-collapsible + .zm-collapsible { + margin-top: var(--spacing-s); +} + +.zm-collapsible-content { + padding: var(--spacing-s); + border-top: 1px solid var(--color-palette-secondary-30); + background-color: var(--color-palette-white); +} diff --git a/src/lib/styles/components/copy.css b/src/lib/styles/components/copy.css new file mode 100644 index 00000000..199bc669 --- /dev/null +++ b/src/lib/styles/components/copy.css @@ -0,0 +1,17 @@ +.zm-copy { + background: var(--color-palette-main-70); + border: none; + cursor: pointer; + padding: 0 var(--button-padding); + border-radius: var(--border-radius); + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--color-palette-white); + transition: background-color 0.2s ease; + font-size: var(--button-font-size); + + &:hover { + background: var(--color-palette-main-90); + } +} diff --git a/src/lib/styles/components/dialog.css b/src/lib/styles/components/dialog.css new file mode 100644 index 00000000..c0a48110 --- /dev/null +++ b/src/lib/styles/components/dialog.css @@ -0,0 +1,124 @@ +.zm-dialog { + max-width: 500px; + border: none; + border-radius: 8px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + background-color: white; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: calc(100vw - var(--spacing-xs) * 2); + + header { + position: sticky; + top: 0; + padding: var(--spacing-s) var(--spacing-m); + display: flex; + flex-direction: column; + background: var(--color-palette-white); + border-bottom: 1px solid var(--color-palette-black-50); + } + + ul { + list-style: none; + padding: 0; + margin: 0; + border-radius: var(--border-radius); + + li { + display: flex; + align-items: center; + padding: var(--spacing-xs) var(--spacing-s); + gap: var(--spacing-xs); + border-top: 1px solid; + border-bottom: 0; + + span { + flex: 1; + font-size: var(--font-xs); + color: var(--color-muted); + text-align: right; + } + + & + li { + margin-top: 0; + } + + &:last-child { + border-bottom: 1px solid; + } + + a { + display: flex; + align-items: center; + justify-content: space-between; + text-decoration: underline; + } + + &.ok { + background-color: var(--color-palette-success-10); + + a { + color: var(--color-palette-success-90); + } + } + + &.warning { + background-color: var(--color-palette-warning-10); + border-color: var(--color-palette-warning-50); + + a { + color: var(--color-palette-warning-90); + } + } + + &.error { + background-color: var(--color-palette-danger-10); + border-color: var(--color-palette-danger-30); + + a { + color: var(--color-palette-danger-90); + } + } + + &.critical { + background-color: var(--color-palette-danger-30); + border-color: var(--color-palette-danger-70); + + a { + color: var(--color-palette-black); + } + } + } + } + + .zm-dialog__close { + all: unset; + position: absolute; + top: 0; + right: 0; + display: grid; + place-items: center; + width: var(--button-size-small); + height: var(--button-size-small); + font-size: var(--font-l); + cursor: pointer; + } + + footer { + position: sticky; + bottom: 0; + display: flex; + justify-content: center; + gap: var(--spacing-xs); + padding: var(--spacing-s); + background: var(--color-palette-white); + border-top: 1px solid var(--color-palette-black-50); + } +} + +.zm-dialog::backdrop { + backdrop-filter: blur(4px); + background-color: rgba(0, 0, 0, 0.3); +} diff --git a/src/lib/styles/components/domain-test.css b/src/lib/styles/components/domain-test.css new file mode 100644 index 00000000..28bb4fb5 --- /dev/null +++ b/src/lib/styles/components/domain-test.css @@ -0,0 +1,121 @@ +.zm-domain-test { + background-color: var(--color-palette-main-10); + border: 1px solid var(--color-palette-main-30); + border-radius: var(--border-radius); + margin-top: calc(var(--rhythm) / 2); + margin-bottom: var(--rhythm); + padding: var(--spacing-default); + + &:first-child { + margin-top: calc(var(--rhythm) / 2); + } + + &.zm-is-testing { + .zm-domain-test__progress-bar { + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 0%; + opacity: 0.5; + transition: width 0.5s linear; + background-image: linear-gradient( + 45deg, + var(--color-palette-main-30) 25%, + transparent 25%, + transparent 50%, + var(--color-palette-main-30) 50%, + var(--color-palette-main-30) 75%, + transparent 75%, + transparent + ); + background-size: 80px 80px; + animation: progress-bar-stripes 2s linear infinite; + z-index: 2; + border-top-left-radius: var(--border-radius); + border-bottom-left-radius: var(--border-radius); + } + + .zm-domain-test__progress { + overflow: hidden; + } + } +} + +.zm-domain-test__progress-bar { + display: none; +} + +.zm-domain-test__progress { + position: relative; + width: 100%; + border-radius: var(--border-radius); +} + +.zm-domain-test__general { + all: unset; + display: block; + padding-top: calc(var(--rhythm) / 2); + margin-bottom: var(--rhythm); + + legend { + font-weight: 700; + } + + label { + cursor: pointer; + margin-right: var(--rhythm); + } +} + +.zm-domain-test__nameservers { + all: unset; + display: block; + margin-top: var(--spacing-s); + padding-top: calc(var(--rhythm) / 2); + + legend { + font-weight: 700; + font-size: var(--font-m); + margin-top: 0; + } + + fieldset { + margin-top: 0; + + legend { + font-size: var(--font-body-size); + } + } +} + +.zm-domain-test__records { + all: unset; + display: block; + padding-top: calc(var(--rhythm) / 2); + margin-top: 0; + + legend { + font-weight: 700; + font-size: var(--font-m); + margin-top: 0; + } + + fieldset { + margin-top: 0; + + legend { + font-size: var(--font-body-size); + } + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 80px 0; + } + to { + background-position: 0 0; + } +} diff --git a/src/lib/styles/components/faq.css b/src/lib/styles/components/faq.css new file mode 100644 index 00000000..10ad630a --- /dev/null +++ b/src/lib/styles/components/faq.css @@ -0,0 +1,8 @@ +.zm-faq-section { + .zm-faq-section__header { + font-size: var(--font-m); + font-family: var(--font-heading-family); + font-weight: var(--font-heading-weight); + margin-top: var(--rhythm); + } +} diff --git a/src/lib/styles/components/fieldset.css b/src/lib/styles/components/fieldset.css new file mode 100644 index 00000000..13e05f67 --- /dev/null +++ b/src/lib/styles/components/fieldset.css @@ -0,0 +1,9 @@ +.zm-fieldset { + border: 0; + margin-top: var(--spacing-s); + + legend { + font-weight: 700; + margin-bottom: var(--spacing-xs); + } +} diff --git a/src/lib/styles/components/filter-toggle.css b/src/lib/styles/components/filter-toggle.css new file mode 100644 index 00000000..ba4a0ca7 --- /dev/null +++ b/src/lib/styles/components/filter-toggle.css @@ -0,0 +1,131 @@ +.zm-filter-toggle { + --active-color: var(--color-subtle); + --active-text-color: var(--color-text); + --active-border-color: var(--color-palette-black-40); + --border-color: transparent; + --badge-color: var(--color-muted); + --badge-text-color: var(--color-palette-white); + + display: flex; + align-items: center; + gap: var(--spacing-xs); + cursor: pointer; + border-radius: var(--border-radius); + padding: var(--spacing-xs); + font-weight: 500; + border: 1px solid var(--border-color); + background-color: var(--color-palette-white); + + &:hover { + background: var(--color-subtle); + border-color: var(--active-border-color); + } + + &:has(input[type="checkbox"]):focus, + &:has(input[type="checkbox"]):focus-within { + box-shadow: 0 0 0 2px var(--color-palette-white), 0 0 0 4px var(--color-tab-highlight); + } + + &.zm-is-active { + --active-border-color: var(--color-palette-black-40); + --border-color: var(--color-palette-black-40); + --badge-color: var(--color-palette-info-50); + --badge-color-dark: ''; + --badge-text-color: var(--color-palette-black); + + text-shadow: 0 0 25px var(--badge-color-dark); + background: var(--active-color); + color: var(--active-text-color); + + &:hover { + --active-border-color: var(--color-palette-black-40); + } + } + + &.zm-is-active.zm--info { + --active-color: var(--color-palette-success-50); + --active-text-color: var(--color-palette-success-0); + --badge-color: var(--color-palette-success-70); + --badge-color-dark: var(--color-palette-success-90); + --badge-text-color: var(--color-palette-white); + --border-color: var(--color-palette-success-50); + --active-border-color: var(--color-palette-success-50); + + &:hover { + border-color: var(--active-border-color); + } + } + + &.zm-is-active.zm--notice { + --active-color: var(--color-palette-info-50); + --active-text-color: var(--color-palette-info-0); + --badge-color: var(--color-palette-info-70); + --badge-color-dark: var(--color-palette-info-90); + --badge-text-color: var(--color-palette-white); + --border-color: var(--color-palette-info-50); + --active-border-color: var(--color-palette-info-50); + + &:hover { + --active-border-color: var(--color-palette-info-50); + } + } + + &.zm-is-active.zm--warning { + --active-color: var(--color-palette-warning-50); + --badge-color: var(--color-palette-warning-70); + --badge-color-dark: ''; + --badge-text-color: var(--color-palette-white); + --border-color: var(--color-palette-warning-50); + --active-border-color: var(--color-palette-warning-50); + + &:hover { + --active-border-color: var(--color-palette-warning-50); + } + } + + &.zm-is-active.zm--error { + --active-color: var(--color-palette-danger-50); + --active-text-color: var(--color-palette-danger-0); + --badge-color: var(--color-palette-danger-70); + --badge-color-dark: var(--color-palette-danger-90); + --badge-text-color: var(--color-palette-white); + --border-color: var(--color-palette-danger-50); + --active-border-color: var(--color-palette-danger-50); + + &:hover { + --active-border-color: var(--color-palette-danger-50); + } + } + + &.zm-is-active.zm--critical { + --active-color: var(--color-palette-danger-70); + --active-text-color: var(--color-palette-danger-0); + --badge-color: var(--color-palette-danger-90); + --badge-color-dark: var(--color-palette-danger-90); + --badge-text-color: var(--color-palette-white); + --border-color: var(--color-palette-danger-70); + --active-border-color: var(--color-palette-danger-70); + + &:hover { + --active-border-color: var(--color-palette-danger-70); + } + } +} + +.zm-filter-toggle__badge { + background: var(--badge-color); + color: var(--badge-text-color); + font-size: var(--font-xs); + font-weight: 700; + text-shadow: none; + border-radius: 999px; + display: inline-flex; + align-items: center; + justify-content: center; + text-decoration: none; + min-width: 1.8em; + height: 1.8em; + line-height: 1; + padding: 0 var(--spacing-xs); + gap: var(--spacing-xxs); +} diff --git a/src/lib/styles/components/grid.css b/src/lib/styles/components/grid.css new file mode 100644 index 00000000..7a826811 --- /dev/null +++ b/src/lib/styles/components/grid.css @@ -0,0 +1,53 @@ +.zm-grid { + display: grid; + gap: var(--gap); + width: 100%; +} + +.zm-grid--2 { + grid-template-columns: repeat(1, 1fr); + + @media screen and (min-width: 576px) { + grid-template-columns: repeat(2, 1fr); + } +} + +.zm-grid--3 { + grid-template-columns: repeat(1, 1fr); + + @media screen and (min-width: 576px) { + grid-template-columns: repeat(3, 1fr); + } +} + +.zm-grid--4 { + grid-template-columns: repeat(1, 1fr); + + @media screen and (min-width: 576px) { + grid-template-columns: repeat(2, 1fr); + } + + @media screen and (min-width: 769px) { + grid-template-columns: repeat(4, 1fr); + } +} + +.zm-grid--5 { + grid-template-columns: repeat(1, 1fr); + + @media screen and (min-width: 576px) { + grid-template-columns: repeat(5, 1fr); + } +} + +.zm-grid--6 { + grid-template-columns: repeat(1, 1fr); + + @media screen and (min-width: 576px) { + grid-template-columns: repeat(3, 1fr); + } + + @media screen and (min-width: 769px) { + grid-template-columns: repeat(6, 1fr); + } +} diff --git a/src/lib/styles/components/input.css b/src/lib/styles/components/input.css new file mode 100644 index 00000000..a4672aea --- /dev/null +++ b/src/lib/styles/components/input.css @@ -0,0 +1,55 @@ +.zm-input { + all: unset; + box-sizing: border-box; + display: block; + height: var(--input-height); + padding: 0 var(--spacing-s); + background: var(--color-background); + border: 1px solid var(--color-border); + border-radius: var(--border-radius); + font-family: var(--font-body-family); + font-size: var(--font-s); + outline: none; + width: 100%; + position: relative; + z-index: 1; + color: var(--color-text); + + &:focus { + box-shadow: 0 0 0 3px var(--color-border); + } + + &:disabled { + cursor: wait; + position: relative; + + &::placeholder { + color: var(--color-palette-black); + opacity: 1; + } + } + + &.zm-input--small { + height: var(--input-height-small); + } +} + +.zm-input-error { + background-color: var(--color-palette-danger-50); + color: var(--color-palette-white); + border-bottom-left-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); + padding-left: calc(var(--spacing-s) * 0.8); + padding-right: calc(var(--spacing-s) * 0.8); + padding-top: calc(var(--spacing-s) * 0.8); + padding-bottom: calc(var(--spacing-xs) * 0.8);; + margin-top: calc(var(--spacing-xs) * -1); + font-size: calc(var(--font-xs) * 1.2); +} + +.zm-label--hidden { + width: 1px; + visibility: hidden; + display: block; + white-space: nowrap; +} diff --git a/src/lib/styles/components/popover.css b/src/lib/styles/components/popover.css new file mode 100644 index 00000000..dfc6f398 --- /dev/null +++ b/src/lib/styles/components/popover.css @@ -0,0 +1,51 @@ +.zm-popover { + position: relative; +} + +.zm-popover__content { + display: none; + position: absolute; + top: 100%; + right: 0; + transform: translateY(var(--spacing-xs)); + padding: var(--spacing-s); + border: 1px solid var(--color-border); + border-radius: var(--border-radius); + background-color: var(--color-palette-main-10); + + &:after, + &:before { + bottom: 100%; + left: calc(100% - var(--rhythm) * 1.75); + border: solid transparent; + content: ''; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + } + + &:after { + border-color: rgba(237, 235, 255, 0); + border-bottom-color: #edebff; + border-width: 10px; + margin-left: -10px; + } + + &:before { + border-color: rgba(178, 170, 251, 0); + border-bottom-color: #b2aafb; + border-width: 11px; + margin-left: -11px; + } + + .zm-popover__plain-btn { + all: unset; + cursor: pointer; + + &:hover, + &:focus { + text-decoration: underline; + } + } +} diff --git a/src/lib/styles/components/result.css b/src/lib/styles/components/result.css new file mode 100644 index 00000000..a8db3ac0 --- /dev/null +++ b/src/lib/styles/components/result.css @@ -0,0 +1,121 @@ +.zm-result__title { + margin-bottom: var(--spacing-m); +} + +.zm-result__group { + & header + div { + margin-top: var(--spacing-s); + } + + ul { + list-style: none; + + > li { + display: flex; + gap: var(--spacing-xs); + + > p { + word-break: normal; + overflow-wrap: anywhere; + } + } + } + + p { + margin-bottom: 0; + } +} + +.zm-result__group__title { + display: flex; + align-items: center; + white-space: nowrap; + margin-bottom: 0; + gap: var(--spacing-xs); +} + +.zm-result__group__button { + all: unset; + cursor: pointer; + display: flex; + align-items: center; + gap: var(--spacing-s); + font-size: calc(var(--font-xs) * 1.15); + color: var(--color-palette-black); + + &:hover, + &:focus { + text-decoration: underline; + } + + i { + font-size: var(--font-m); + color: var(--color-palette-success-70); + } + + span { + display: flex; + align-items: center; + gap: var(--spacing-xxs); + + i { + font-size: var(--font-s-xs); + } + } +} + +.zm-result__group--notice { + .zm-result__group__button i { + color: var(--color-palette-info-70); + } +} + +.zm-result__group--warning { + .zm-result__group__button i { + color: var(--color-palette-warning-70); + } +} + +.zm-result__group--error, +.zm-result__group--critical { + .zm-result__group__button i { + color: var(--color-palette-error-70); + } +} + +.zm-result__module__title button { + all: unset; + display: flex; + align-items: center; + gap: var(--spacing-xs); + cursor: pointer; +} + +.zm-result__module { + background: var(--color-palette-black-10); + padding: var(--spacing-s); + border-radius: var(--border-radius); + + .zm-result__module__title { + margin-bottom: 0; + } + + button { + &:hover, + &:focus { + span { + text-decoration: underline; + } + } + } +} + +.zm-result__module__data { + margin-top: var(--spacing-s); +} + +.zm-result-entries { + li { + display: flex; + } +} diff --git a/src/lib/styles/components/select.css b/src/lib/styles/components/select.css new file mode 100644 index 00000000..9129d7bd --- /dev/null +++ b/src/lib/styles/components/select.css @@ -0,0 +1,25 @@ +.zm-select { + box-sizing: border-box; + display: block; + width: 100%; + height: var(--input-height); + padding: 0 var(--spacing-s); + background: var(--color-background); + border: 1px solid var(--color-border); + border-radius: var(--border-radius); + font-family: var(--font-body-family); + font-size: var(--font-s); + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #fff; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + appearance: none; + + &:focus { + box-shadow: 0 0 0 3px var(--color-palette-main-30); + } +} diff --git a/src/lib/styles/components/switch.css b/src/lib/styles/components/switch.css new file mode 100644 index 00000000..69fef2e7 --- /dev/null +++ b/src/lib/styles/components/switch.css @@ -0,0 +1,7 @@ +.zm-switch { + cursor: pointer; + + label { + cursor: pointer; + } +} diff --git a/src/lib/styles/style.css b/src/lib/styles/style.css new file mode 100644 index 00000000..4d494b09 --- /dev/null +++ b/src/lib/styles/style.css @@ -0,0 +1,18 @@ +@import 'components/grid.css'; +@import 'components/button.css'; +@import 'components/button-group.css'; +@import 'components/input.css'; +@import 'components/select.css'; +@import 'components/badge.css'; +@import 'components/copy.css'; +@import 'components/filter-toggle.css'; +@import 'components/collapsible.css'; +@import 'components/alert.css'; +@import 'components/switch.css'; +@import 'components/domain-test.css'; +@import 'components/dialog.css'; +@import 'components/popover.css'; +@import 'components/fieldset.css'; +@import 'components/result.css'; +@import 'components/faq.css'; +@import 'colors.css'; diff --git a/src/lib/utils.module.css b/src/lib/utils.module.css new file mode 100644 index 00000000..c79465cc --- /dev/null +++ b/src/lib/utils.module.css @@ -0,0 +1,3 @@ +.selfLeft { + align-self: flex-start; +} diff --git a/src/lib/vite.config.js b/src/lib/vite.config.js new file mode 100644 index 00000000..846cf39e --- /dev/null +++ b/src/lib/vite.config.js @@ -0,0 +1,28 @@ +import { resolve } from 'path'; +import { defineConfig } from 'vite'; +import { svelte } from '@sveltejs/vite-plugin-svelte'; + +export default defineConfig({ + envPrefix: 'PUBLIC_', + resolve: { + alias: { + '@': resolve(__dirname, '../'), + '@theme': resolve(__dirname, '../themes/default'), + }, + }, + build: { + lib: { + entry: resolve(__dirname, './main.ts'), + name: 'Zonemaster', + // the proper extensions will be added + fileName: 'zonemaster', + }, + }, + plugins: [ + svelte({ + compilerOptions: { + customElement: true, + }, + }), + ], +}); diff --git a/src/locale/messages.da.xlf b/src/locale/messages.da.xlf deleted file mode 100644 index 2d9ac9d4..00000000 --- a/src/locale/messages.da.xlf +++ /dev/null @@ -1,815 +0,0 @@ - - - - - - Algorithm - Algoritme - form label - - - Algorithm required - Algoritme påkrævet - form error - - - All - Alle - history button - - - Digest - Digest - form label - - - Digest required - Digest påkrævet - form error - - - Digest type - Digest type - form label - - - Digest type required - Digest type påkrævet - form error - - - Disable IPv4 - Deaktiver IPv4 - form label - - - Disable IPv6 - Deaktiver IPv6 - form label - - - Domain name required - Domænenavn påkrævet - form error - - - Error during parent data fetching. - Data fra forælder kunne ikke hentes. - - - Export - Eksporter - result button - - - FAQ - FAQ - - - History - Historik - result button - - - History information request is in progress. - Hitorisk information er undervejs. - - - Keytag - Key tag - form label - - - Keytag required - Keytag påkrævet - form error - - - Nameservers - Navneservere - form section - - - No data for this test. - Ingen data til denne test. - - - Page Not Found - Siden blev ikke fundet - - - Parent data fetched with success. - Data fra forælder er hentet med succes. - - - Please set the api endpoint - Vælg venligst api endpoint - - - Profile - Profil - form label - - - Program versions - Programversioner - - - Results from previous tests are not available. - Resultater fra tidligere test er ikke tilgængelige. - history info - - - Run a test - Kør test - nav link - - - Share - Del - form button - - - Sorry, there is nothing here! - Beklager, der er intet her! - - - What is an undelegated domain test? - Hvad er en ikke-delegeret test? - form info - - - Zonemaster Backend is not available. - Zonemaster Backend er ikke tilgængelig. - - - Delegated - Delegerede - plural delegated - history button - - - Undelegated - Ikke-delegerede - singular undelegated - history info - - - Undelegated - Ikke-delegeret - plural undelegated - history button - - - Click to return on the top page - Klik for at vende tilbage til toppen af siden - nav button - - - Error 404 - Fejl 404 - - - Result - Resultat - result header - - - Close - Luk - - - All - Alle - all filter button - - - Info - Info - info filter button - - - Notice - Bemærk - notice filter button - - - Warning - Advarsel - warning filter button - - - Error - Fejl - error filter button - - - Critical - Kritisk - critical filter button - - - Module - Modul - - - Level - Niveau - - - Message - Besked - - - A word about the DNS - Om DNS - - - Name - Kør - form label - - - Change language - Skift sprog - nav label - - - Test completed! - Test afsluttet! - - - Clear domain input - Ryd domæne - form button - - - DS records - DS-record - form section - - - General - Generelt - form section - - - Protocol - Protokol - form section - - - Cannot disable both IPv4 and IPv6 - Kan ikke deaktivere både IPv4 og IPv6 - form error - - - No data found for the zone. - Ingen data fundet for zonen. - - - Link to test - Link til testen - result label - - - Copy link to clipboard - Kopier link til udklipsholder - result button - - - Fetch DS from parent zone - Hent DS-record fra forældrezonen - form button - - - No previous tests found for this domain. - Ingen tidligere tests fundet for dette domænenavn. - - - An unexpected server error happened. - En uventet fejl opstod. - - - «« - «« - - - « - « - - - » - » - - - »» - »» - - - First - Første - - - Previous - Forrige - - - Next - Næste - - - Last - Sidste - - - - - - - - - - - Check how your domain is doing - - - Test your domain - - - What is Zonemaster? - - - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - - - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - - - Copyright © AFNIC and The Swedish Internet Foundation - Copyright © AFNIC and The Swedish Internet Foundation - footer - - - Domain name - form label - Domænenavn - - - More information on undelegated test: - More information on undelegated test: - form info - - - Nameserver # - form section - - - The name of nameserver is required - The name of nameserver is required - form error - - - Delete nameserver # - form button - - - DS record # - form section - - - Delete DS record # - form button - - - Test another domain - result subheader - - - Filter severity levels - resut filter section - - - Collapse all - result filter messages - - - Run the test - Run the test - form button - - - Reset the form - form button - Reset the form - - - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - - - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - - - Frequently asked questions - Frequently asked questions - faq header - - - Find answers to common questions about Zonemaster here. - Find answers to common questions about Zonemaster here. - faq header - - - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - faq header - - - General information - General information - faq section header - - - What is Zonemaster? - What is Zonemaster? - faq question - - - Who is behind Zonemaster? - Who is behind Zonemaster? - faq question - - - Zonemaster is a joint project between AFNIC (registry of '.fr' TLD and several other TLDs, e.g. '.re', '.pm', '.tf', '.wf', '.yt' and '.paris') and The Swedish Internet Foundation (registry of '.se' and '.nu' TLDs). - Zonemaster is a joint project between AFNIC (registry of '.fr' TLD and several other TLDs, e.g. '.re', '.pm', '.tf', '.wf', '.yt' and '.paris') and The Swedish Internet Foundation (registry of '.se' and '.nu' TLDs). - faq answer - - - How can Zonemaster help me? - How can Zonemaster help me? - faq question - - - The Zonemaster tool could help different kind of users: - The Zonemaster tool could help different kind of users: - faq answer - - - Users who just want to know whether the domain name they own or use have any issues or not. - Users who just want to know whether the domain name they own or use have any issues or not. - faq answer - - - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - faq answer - - - What makes Zonemaster different from other DNS zone validating software? - What makes Zonemaster different from other DNS zone validating software? - faq question - - - Firstly, Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - Firstly, Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - faq answer - - - Lastly, this open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - Lastly, this open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - faq answer - - - How can Zonemaster distinguish between what is right and wrong? - How can Zonemaster distinguish between what is right and wrong? - faq question - - - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - faq answer - - - What kind of queries does Zonemaster generate? - What kind of queries does Zonemaster generate? - faq question - - - Zonemaster send multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - Zonemaster send multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - faq answer - - - Zonemaster and privacy - Zonemaster and privacy - faq response - - - Using Zonemaster - Using Zonemaster - faq section header - - - How come my domain name cannot be tested? - How come my domain name cannot be tested? - faq answer - - - There are several possibilities: - There are several possibilities: - faq answer - - - Your domain name is not yet delegated. - Your domain name is not yet delegated. - faq answer - - - Your domain name is not reachable from public Internet. - Your domain name is not reachable from public Internet. - faq answer - - - Zonemaster can only test what is called a DNS zone (e.g. 'zonemaster.net') and not host names (e.g. 'www.zonemaster.net') - Zonemaster can only test what is called a DNS zone (e.g. 'zonemaster.net') and not host names (e.g. 'www.zonemaster.net') - faq answer - - - There is a 10 minutes protection between consecutive tests for a given domain name (with same test parameters). Running a test within that window will instead show the last available test for that domain name (and parameters). - There is a 10 minutes protection between consecutive tests for a given domain name (with same test parameters). Running a test within that window will instead show the last available test for that domain name (and parameters). - faq answer - - - You have misspelled your domain name. - You have misspelled your domain name. - faq answer - - - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - faq response - - - What is an undelegated domain test? - What is an undelegated domain test? - faq answer - - - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. This can be quite useful if one is going to migrate one's domain from one registrar to another, e.g., migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. This can be quite useful if one is going to migrate one's domain from one registrar to another, e.g., migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - faq answer - - - Does Zonemaster support IPv6? - Does Zonemaster support IPv6? - faq question - - - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Options" button. - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Options" button. - faq answer - - - Does Zonemaster verify DNSSEC? - Does Zonemaster verify DNSSEC? - faq question - - - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - faq answer - - - Can I test the DS records before they are published? - Can I test the DS records before they are published? - faq question - - - Yes. Use the "Options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - Yes. Use the "Options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - faq answer - - - How can I test a "reverse" zone with Zonemaster? - How can I test a "reverse" zone with Zonemaster? - faq answer - - - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - faq answer - - - Examples: - Examples: - faq answer - - - For IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa - For IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa - faq answer - - - For IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa - For IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa - faq answer - - - Source code - Source code - footer - - - Documentation - Documentation - footer - - - https://www.afnic.fr/en/ - https://www.afnic.fr/en/ - Afnic link - - - Address - Address - form label - - - (optional) - (optional) - form info - - - What is the meaning of the severity levels? - What is the meaning of the severity levels? - result info - - - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - result security level description - - - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - result security level description - - - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - result security level description - - - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - result security level description - - - The message means a very serious error. - The message means a very serious error. - result security level description - - - Search text in messages - Search text in messages - result filter messages - - - : - : - result colon - - - https://internetstiftelsen.se/en/ - https://internetstiftelsen.se/en/ - IIS link - - - https://en.wikipedia.org/wiki/Request_for_Comments - https://en.wikipedia.org/wiki/Request_for_Comments - RFC Wikipedia link - - - Fetch nameservers from parent zone - Fetch nameservers from parent zone - form button - - - Expand all modules - Expand all modules - result filter messages - - - The descriptions of message levels such as notice, warning and error are found in Severity Level Definitions. - The descriptions of message levels such as notice, warning and error are found in Severity Level Definitions. - faq answer - - - Test result for - result subheader - - - Created on - result test metadata - - - Zonemaster is a program designed to help people check, measure and hopefully also understand how the DNS (Domain Name System) works. - faq answer - - - It consists of several components: - faq answer - - - Engine - a test framework that supports all functionality to perform DNS tests. - faq answer - - - CLI - a command-line interface to the Engine. - faq answer - - - Bakend - a server that allows you to run Zonemaster tests and save results using a JSON-RPC API and a database. - faq answer - - - GUI - a web interface to the Backend. - faq answer - - - When a domain name (such as 'zonemaster.net') is submitted to Zonemaster (using CLI or GUI), it will verify the domain name’s general health with a series of tests. The tests conducted by Zonemaster can be found in the Defined Test Cases document. - faq answer - - - Users who are knowledgable about the DNS protocol. - faq answer - - - Secondly, all tests that Zonemaster runs are defined in Test Case specifications that can be found in the Defined Test Cases document. - faq answer - - - Thirdly, Zonemaster can be used to test undelegated domain names. See Question 12. - faq answer - Thirdly, Zonemaster can be used to test undelegated domain names. See Question 12. - - - Fourthly, Zonemaster can be used to test DS records before their publication in the parent zone (which is required to enable DNSSEC for a signed zone). See Question 13. - faq answer - Fourthly, Zonemaster can be used to test DS records before their publication in the parent zone (which is required to enable DNSSEC for a signed zone). See Question 13. - - - The judgement of Zonemaster is primarily based on the DNS standards as defined in RFCs. It also bases its judgement on DNS best practices, which can be more loosely defined. All Zonemaster tests are defined in Test Case Specifications in which the references to the standard documents for that test case are found. - faq answer - - - The GUI interface of Zonemaster does not show any queries sent, only the CLI interface can. If you want to see such queries, you will have to locally install a minimally working Zonemaster instance with both the Engine and CLI components (a Docker image is also available). Queries sent can be shown using the 'DEBUG' level option. Fair warning, the output from the CLI can be quite heavy. For more information see Using The CLI. - faq answer - - - Since Zonemaster.net is open to everyone it is possible for anyone to check your domain and its history of tests. However there is no way to tell who has run a specific test since nothing more than the test parameters and results are stored. Specifically, no cookies or information on the user's IP address is stored in the database. The user who initiated the test cannot be traced back from the information in the database. - faq answer - - - It depends on which test failed for your domain name. Each test are accompanied with one or several messages describing the issues found. You can also get further insight about each test from the Defined Test Cases document. - faq answer - - - Show options - form options - - - Hide options - form options - - - Name of nameserver # - form label - - - Address of nameserver # - form label - - - Key tag of DS record # - form label - - - Algorithm of DS record # - form label - - - Digest type of DS record # - form label - - - Digest of DS record # - form label - - - - \ No newline at end of file diff --git a/src/locale/messages.es.xlf b/src/locale/messages.es.xlf deleted file mode 100644 index 277e900f..00000000 --- a/src/locale/messages.es.xlf +++ /dev/null @@ -1,815 +0,0 @@ - - - - - - Algorithm - Algoritmo - form label - - - Algorithm required - Algoritmo necesario - form error - - - All - Todos - history button - - - Digest - Resumen - form label - - - Digest required - Resumen necesario - form error - - - Digest type - Tipo de resumen - form label - - - Digest type required - Tipo de resumen necesario - form error - - - Disable IPv4 - Deshabilitar IPv4 - form label - - - Disable IPv6 - Deshabilitar IPv6 - form label - - - Domain name required - Nombre de dominio necesario - form error - - - Error during parent data fetching. - Error durante la obtención de datos del padre. - - - Export - Exportar - result button - - - FAQ - FAQ - - - History - Historia - result button - - - History information request is in progress. - Solicitud de información histórica en progreso. - - - Keytag - Tag de Llave - form label - - - Keytag required - Tag de llave necesaria - form error - - - Nameservers - Servidores de nombres - form section - - - No data for this test. - No hay datos para esta prueba. - - - Page Not Found - Página No Encontrada - - - Parent data fetched with success. - Los datos del padre fueron obtenidos exitosamente. - - - Please set the api endpoint - Por favor defina el punto de destino ("endpoint") de la api - - - Profile - Perfil - form label - - - Program versions - Versiones del programa - - - Results from previous tests are not available. - No están disponibles los resultados de pruebas anteriores. - history info - - - Run a test - Ejecutar la prueba - nav link - - - Share - Compartir - form button - - - Sorry, there is nothing here! - Lo siento, ¡no hay nada aquí! - - - What is an undelegated domain test? - ¿Qué es una prueba de dominio no delegado? - form info - - - Zonemaster Backend is not available. - El servidor interno de Zonemaster no está disponible. - - - Delegated - Delegados - plural delegated - history button - - - Undelegated - No están delegados - singular undelegated - history info - - - Undelegated - No está delegado - plural undelegated - history button - - - Click to return on the top page - Cliquee para volver al comienzo de la página - nav button - - - Error 404 - Error 404 - - - Result - Resultado - result header - - - Close - Cerrar - - - All - Todos - all filter button - - - Info - Información - info filter button - - - Notice - Aviso - notice filter button - - - Warning - Advertencia - warning filter button - - - Error - Error - error filter button - - - Critical - Crítico - critical filter button - - - Module - Módulo - - - Level - Nivel - - - Message - Mensaje - - - A word about the DNS - Acerca del DNS - - - Name - Ejecutar - form label - - - Change language - Cambiar idioma - nav label - - - Test completed! - ¡Prueba completa! - - - Clear domain input - Limpiar entrada de dominio - form button - - - DS records - Registros DS - form section - - - General - General - form section - - - Protocol - Protocolo - form section - - - Cannot disable both IPv4 and IPv6 - No puede deshabilitar ambos IPv4 e IPv6 - form error - - - No data found for the zone. - No se encontraron datos para la zona. - - - Link to test - Enlace a la prueba - result label - - - Copy link to clipboard - Copiar enlace al portapapeles - result button - - - Fetch DS from parent zone - Obtener DS desde la zona padre - form button - - - No previous tests found for this domain. - No se encontraron pruebas anteriores para este dominio. - - - An unexpected server error happened. - Ha ocurrido un error inesperado en el servidor. - - - «« - «« - - - « - « - - - » - » - - - »» - »» - - - First - Primera - - - Previous - Anterior - - - Next - Siguiente - - - Last - Última - - - - - - - - - - - Check how your domain is doing - - - Test your domain - - - What is Zonemaster? - - - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - - - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - - - Copyright © AFNIC and The Swedish Internet Foundation - Copyright © AFNIC and The Swedish Internet Foundation - footer - - - Domain name - form label - Nombre de dominio - - - More information on undelegated test: - More information on undelegated test: - form info - - - Nameserver # - form section - - - The name of nameserver is required - The name of nameserver is required - form error - - - Delete nameserver # - form button - - - DS record # - form section - - - Delete DS record # - form button - - - Test another domain - result subheader - - - Filter severity levels - resut filter section - - - Collapse all - result filter messages - - - Run the test - Run the test - form button - - - Reset the form - form button - Reset the form - - - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - - - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - - - Frequently asked questions - Frequently asked questions - faq header - - - Find answers to common questions about Zonemaster here. - Find answers to common questions about Zonemaster here. - faq header - - - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - faq header - - - General information - General information - faq section header - - - What is Zonemaster? - What is Zonemaster? - faq question - - - Who is behind Zonemaster? - Who is behind Zonemaster? - faq question - - - Zonemaster is a joint project between AFNIC (registry of '.fr' TLD and several other TLDs, e.g. '.re', '.pm', '.tf', '.wf', '.yt' and '.paris') and The Swedish Internet Foundation (registry of '.se' and '.nu' TLDs). - Zonemaster is a joint project between AFNIC (registry of '.fr' TLD and several other TLDs, e.g. '.re', '.pm', '.tf', '.wf', '.yt' and '.paris') and The Swedish Internet Foundation (registry of '.se' and '.nu' TLDs). - faq answer - - - How can Zonemaster help me? - How can Zonemaster help me? - faq question - - - The Zonemaster tool could help different kind of users: - The Zonemaster tool could help different kind of users: - faq answer - - - Users who just want to know whether the domain name they own or use have any issues or not. - Users who just want to know whether the domain name they own or use have any issues or not. - faq answer - - - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - faq answer - - - What makes Zonemaster different from other DNS zone validating software? - What makes Zonemaster different from other DNS zone validating software? - faq question - - - Firstly, Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - Firstly, Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - faq answer - - - Lastly, this open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - Lastly, this open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - faq answer - - - How can Zonemaster distinguish between what is right and wrong? - How can Zonemaster distinguish between what is right and wrong? - faq question - - - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - faq answer - - - What kind of queries does Zonemaster generate? - What kind of queries does Zonemaster generate? - faq question - - - Zonemaster send multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - Zonemaster send multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - faq answer - - - Zonemaster and privacy - Zonemaster and privacy - faq response - - - Using Zonemaster - Using Zonemaster - faq section header - - - How come my domain name cannot be tested? - How come my domain name cannot be tested? - faq answer - - - There are several possibilities: - There are several possibilities: - faq answer - - - Your domain name is not yet delegated. - Your domain name is not yet delegated. - faq answer - - - Your domain name is not reachable from public Internet. - Your domain name is not reachable from public Internet. - faq answer - - - Zonemaster can only test what is called a DNS zone (e.g. 'zonemaster.net') and not host names (e.g. 'www.zonemaster.net') - Zonemaster can only test what is called a DNS zone (e.g. 'zonemaster.net') and not host names (e.g. 'www.zonemaster.net') - faq answer - - - There is a 10 minutes protection between consecutive tests for a given domain name (with same test parameters). Running a test within that window will instead show the last available test for that domain name (and parameters). - There is a 10 minutes protection between consecutive tests for a given domain name (with same test parameters). Running a test within that window will instead show the last available test for that domain name (and parameters). - faq answer - - - You have misspelled your domain name. - You have misspelled your domain name. - faq answer - - - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - faq response - - - What is an undelegated domain test? - What is an undelegated domain test? - faq answer - - - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. This can be quite useful if one is going to migrate one's domain from one registrar to another, e.g., migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. This can be quite useful if one is going to migrate one's domain from one registrar to another, e.g., migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - faq answer - - - Does Zonemaster support IPv6? - Does Zonemaster support IPv6? - faq question - - - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Options" button. - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Options" button. - faq answer - - - Does Zonemaster verify DNSSEC? - Does Zonemaster verify DNSSEC? - faq question - - - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - faq answer - - - Can I test the DS records before they are published? - Can I test the DS records before they are published? - faq question - - - Yes. Use the "Options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - Yes. Use the "Options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - faq answer - - - How can I test a "reverse" zone with Zonemaster? - How can I test a "reverse" zone with Zonemaster? - faq answer - - - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - faq answer - - - Examples: - Examples: - faq answer - - - For IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa - For IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa - faq answer - - - For IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa - For IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa - faq answer - - - Source code - Source code - footer - - - Documentation - Documentation - footer - - - https://www.afnic.fr/en/ - https://www.afnic.fr/en/ - Afnic link - - - Address - Address - form label - - - (optional) - (optional) - form info - - - What is the meaning of the severity levels? - What is the meaning of the severity levels? - result info - - - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - result security level description - - - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - result security level description - - - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - result security level description - - - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - result security level description - - - The message means a very serious error. - The message means a very serious error. - result security level description - - - Search text in messages - Search text in messages - result filter messages - - - : - : - result colon - - - https://internetstiftelsen.se/en/ - https://internetstiftelsen.se/en/ - IIS link - - - https://en.wikipedia.org/wiki/Request_for_Comments - https://en.wikipedia.org/wiki/Request_for_Comments - RFC Wikipedia link - - - Fetch nameservers from parent zone - Fetch nameservers from parent zone - form button - - - Expand all modules - Expand all modules - result filter messages - - - The descriptions of message levels such as notice, warning and error are found in Severity Level Definitions. - The descriptions of message levels such as notice, warning and error are found in Severity Level Definitions. - faq answer - - - Test result for - result subheader - - - Created on - result test metadata - - - Zonemaster is a program designed to help people check, measure and hopefully also understand how the DNS (Domain Name System) works. - faq answer - - - It consists of several components: - faq answer - - - Engine - a test framework that supports all functionality to perform DNS tests. - faq answer - - - CLI - a command-line interface to the Engine. - faq answer - - - Bakend - a server that allows you to run Zonemaster tests and save results using a JSON-RPC API and a database. - faq answer - - - GUI - a web interface to the Backend. - faq answer - - - When a domain name (such as 'zonemaster.net') is submitted to Zonemaster (using CLI or GUI), it will verify the domain name’s general health with a series of tests. The tests conducted by Zonemaster can be found in the Defined Test Cases document. - faq answer - - - Users who are knowledgable about the DNS protocol. - faq answer - - - Secondly, all tests that Zonemaster runs are defined in Test Case specifications that can be found in the Defined Test Cases document. - faq answer - - - Thirdly, Zonemaster can be used to test undelegated domain names. See Question 12. - faq answer - Thirdly, Zonemaster can be used to test undelegated domain names. See Question 12. - - - Fourthly, Zonemaster can be used to test DS records before their publication in the parent zone (which is required to enable DNSSEC for a signed zone). See Question 13. - faq answer - Fourthly, Zonemaster can be used to test DS records before their publication in the parent zone (which is required to enable DNSSEC for a signed zone). See Question 13. - - - The judgement of Zonemaster is primarily based on the DNS standards as defined in RFCs. It also bases its judgement on DNS best practices, which can be more loosely defined. All Zonemaster tests are defined in Test Case Specifications in which the references to the standard documents for that test case are found. - faq answer - - - The GUI interface of Zonemaster does not show any queries sent, only the CLI interface can. If you want to see such queries, you will have to locally install a minimally working Zonemaster instance with both the Engine and CLI components (a Docker image is also available). Queries sent can be shown using the 'DEBUG' level option. Fair warning, the output from the CLI can be quite heavy. For more information see Using The CLI. - faq answer - - - Since Zonemaster.net is open to everyone it is possible for anyone to check your domain and its history of tests. However there is no way to tell who has run a specific test since nothing more than the test parameters and results are stored. Specifically, no cookies or information on the user's IP address is stored in the database. The user who initiated the test cannot be traced back from the information in the database. - faq answer - - - It depends on which test failed for your domain name. Each test are accompanied with one or several messages describing the issues found. You can also get further insight about each test from the Defined Test Cases document. - faq answer - - - Show options - form options - - - Hide options - form options - - - Name of nameserver # - form label - - - Address of nameserver # - form label - - - Key tag of DS record # - form label - - - Algorithm of DS record # - form label - - - Digest type of DS record # - form label - - - Digest of DS record # - form label - - - - \ No newline at end of file diff --git a/src/locale/messages.fi.xlf b/src/locale/messages.fi.xlf deleted file mode 100644 index 3a27a3a4..00000000 --- a/src/locale/messages.fi.xlf +++ /dev/null @@ -1,815 +0,0 @@ - - - - - - Algorithm - Algoritmi - form label - - - Algorithm required - Algoritmi vaaditaan - form error - - - All - Kaikki - history button - - - Digest - Tiiviste - form label - - - Digest required - Tiiviste (Digest) vaaditaan - form error - - - Digest type - Tiivisteen (Digest) tyyppi - form label - - - Digest type required - Tiivisteen (Digest) tyyppi vaaditaan - form error - - - Disable IPv4 - Poista IPv4 käytöstä - form label - - - Disable IPv6 - Poista IPv6 käytöstä - form label - - - Domain name required - Verkkotunnus vaaditaan - form error - - - Error during parent data fetching. - Virhe haettaessa tietoja pääverkkotunnuksesta. - - - Export - Vie - result button - - - FAQ - Usein kysytyt kysymykset (FAQ) - - - History - Historia - result button - - - History information request is in progress. - Aiempien testitulosten haku käynnissä. - - - Keytag - Keytag - form label - - - Keytag required - Keytag vaaditaan - form error - - - Nameservers - Nimipalvelimet - form section - - - No data for this test. - Ei dataa tätä testiä varten. - - - Page Not Found - Sivua ei löytynyt - - - Parent data fetched with success. - Data haettiin pääverkkotunnuksesta ongelmitta. - - - Please set the api endpoint - Aseta API endpoint - - - Profile - Profiili - form label - - - Program versions - Ohjelman versiot - - - Results from previous tests are not available. - Ei aiempia testituloksia. - history info - - - Run a test - Suorita testi - nav link - - - Share - Jaa - form button - - - Sorry, there is nothing here! - Ikävä kyllä täällä ei ole mitään! - - - What is an undelegated domain test? - Mikä on delegoimattoman verkkotunnuksen testi? - form info - - - Zonemaster Backend is not available. - Zonemaster Backend ei ole käytettävissä. - - - Delegated - Delegoitu - plural delegated - history button - - - Undelegated - Delegointi puuttuu - singular undelegated - history info - - - Undelegated - Delegointi puuttuu - plural undelegated - history button - - - Click to return on the top page - Valitse palataksesi yläsivulle - nav button - - - Error 404 - Virhe 404 - - - Result - Tulos - result header - - - Close - Sulje - - - All - Kaikki - all filter button - - - Info - Info - info filter button - - - Notice - Ilmoitus - notice filter button - - - Warning - Varoitus - warning filter button - - - Error - Virhe - error filter button - - - Critical - Kriittinen - critical filter button - - - Module - Moduuli - - - Level - Taso - - - Message - Viesti - - - A word about the DNS - Tietoja DNS:stä - - - Name - Suorita - form label - - - Change language - Vaihda kieli - nav label - - - Test completed! - Testi on valmis! - - - Clear domain input - Tyhjennä sisältö - form button - - - DS records - DS tietue - form section - - - General - Yleinen - form section - - - Protocol - Protokolla - form section - - - Cannot disable both IPv4 and IPv6 - Ei pysty poistamaan käytöstä molempia, sekä IPv4 että IPv6 - form error - - - No data found for the zone. - Vyöhykkeelle (zone) ei löytynyt dataa. - - - Link to test - Linkki testiin - result label - - - Copy link to clipboard - Kopioi linkki työpöydälle - result button - - - Fetch DS from parent zone - Nouda DS-tietueet ylemmältä tasolta - form button - - - No previous tests found for this domain. - Tälle verkkotunnukselle ei löytynyt vanhempia testejä. - - - An unexpected server error happened. - Tapahtui odottamaton palvelinvirhe. - - - «« - «« - - - « - « - - - » - » - - - »» - »» - - - First - Ensimmäinen - - - Previous - Edellinen - - - Next - Seuraava - - - Last - Viimeinen - - - - - - - - - - - Check how your domain is doing - - - Test your domain - - - What is Zonemaster? - - - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - - - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - - - Copyright © AFNIC and The Swedish Internet Foundation - Copyright © AFNIC and The Swedish Internet Foundation - footer - - - Domain name - form label - Verkkotunnus - - - More information on undelegated test: - More information on undelegated test: - form info - - - Nameserver # - form section - - - The name of nameserver is required - The name of nameserver is required - form error - - - Delete nameserver # - form button - - - DS record # - form section - - - Delete DS record # - form button - - - Test another domain - result subheader - - - Filter severity levels - resut filter section - - - Collapse all - result filter messages - - - Run the test - Run the test - form button - - - Reset the form - form button - Reset the form - - - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - - - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - - - Frequently asked questions - Frequently asked questions - faq header - - - Find answers to common questions about Zonemaster here. - Find answers to common questions about Zonemaster here. - faq header - - - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - faq header - - - General information - General information - faq section header - - - What is Zonemaster? - What is Zonemaster? - faq question - - - Who is behind Zonemaster? - Who is behind Zonemaster? - faq question - - - Zonemaster is a joint project between AFNIC (registry of '.fr' TLD and several other TLDs, e.g. '.re', '.pm', '.tf', '.wf', '.yt' and '.paris') and The Swedish Internet Foundation (registry of '.se' and '.nu' TLDs). - Zonemaster is a joint project between AFNIC (registry of '.fr' TLD and several other TLDs, e.g. '.re', '.pm', '.tf', '.wf', '.yt' and '.paris') and The Swedish Internet Foundation (registry of '.se' and '.nu' TLDs). - faq answer - - - How can Zonemaster help me? - How can Zonemaster help me? - faq question - - - The Zonemaster tool could help different kind of users: - The Zonemaster tool could help different kind of users: - faq answer - - - Users who just want to know whether the domain name they own or use have any issues or not. - Users who just want to know whether the domain name they own or use have any issues or not. - faq answer - - - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - faq answer - - - What makes Zonemaster different from other DNS zone validating software? - What makes Zonemaster different from other DNS zone validating software? - faq question - - - Firstly, Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - Firstly, Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - faq answer - - - Lastly, this open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - Lastly, this open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - faq answer - - - How can Zonemaster distinguish between what is right and wrong? - How can Zonemaster distinguish between what is right and wrong? - faq question - - - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - faq answer - - - What kind of queries does Zonemaster generate? - What kind of queries does Zonemaster generate? - faq question - - - Zonemaster send multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - Zonemaster send multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - faq answer - - - Zonemaster and privacy - Zonemaster and privacy - faq response - - - Using Zonemaster - Using Zonemaster - faq section header - - - How come my domain name cannot be tested? - How come my domain name cannot be tested? - faq answer - - - There are several possibilities: - There are several possibilities: - faq answer - - - Your domain name is not yet delegated. - Your domain name is not yet delegated. - faq answer - - - Your domain name is not reachable from public Internet. - Your domain name is not reachable from public Internet. - faq answer - - - Zonemaster can only test what is called a DNS zone (e.g. 'zonemaster.net') and not host names (e.g. 'www.zonemaster.net') - Zonemaster can only test what is called a DNS zone (e.g. 'zonemaster.net') and not host names (e.g. 'www.zonemaster.net') - faq answer - - - There is a 10 minutes protection between consecutive tests for a given domain name (with same test parameters). Running a test within that window will instead show the last available test for that domain name (and parameters). - There is a 10 minutes protection between consecutive tests for a given domain name (with same test parameters). Running a test within that window will instead show the last available test for that domain name (and parameters). - faq answer - - - You have misspelled your domain name. - You have misspelled your domain name. - faq answer - - - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - faq response - - - What is an undelegated domain test? - What is an undelegated domain test? - faq answer - - - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. This can be quite useful if one is going to migrate one's domain from one registrar to another, e.g., migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. This can be quite useful if one is going to migrate one's domain from one registrar to another, e.g., migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - faq answer - - - Does Zonemaster support IPv6? - Does Zonemaster support IPv6? - faq question - - - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Options" button. - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Options" button. - faq answer - - - Does Zonemaster verify DNSSEC? - Does Zonemaster verify DNSSEC? - faq question - - - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - faq answer - - - Can I test the DS records before they are published? - Can I test the DS records before they are published? - faq question - - - Yes. Use the "Options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - Yes. Use the "Options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - faq answer - - - How can I test a "reverse" zone with Zonemaster? - How can I test a "reverse" zone with Zonemaster? - faq answer - - - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - faq answer - - - Examples: - Examples: - faq answer - - - For IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa - For IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa - faq answer - - - For IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa - For IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa - faq answer - - - Source code - Source code - footer - - - Documentation - Documentation - footer - - - https://www.afnic.fr/en/ - https://www.afnic.fr/en/ - Afnic link - - - Address - Address - form label - - - (optional) - (optional) - form info - - - What is the meaning of the severity levels? - What is the meaning of the severity levels? - result info - - - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - result security level description - - - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - result security level description - - - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - result security level description - - - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - result security level description - - - The message means a very serious error. - The message means a very serious error. - result security level description - - - Search text in messages - Search text in messages - result filter messages - - - : - : - result colon - - - https://internetstiftelsen.se/en/ - https://internetstiftelsen.se/en/ - IIS link - - - https://en.wikipedia.org/wiki/Request_for_Comments - https://en.wikipedia.org/wiki/Request_for_Comments - RFC Wikipedia link - - - Fetch nameservers from parent zone - Fetch nameservers from parent zone - form button - - - Expand all modules - Expand all modules - result filter messages - - - The descriptions of message levels such as notice, warning and error are found in Severity Level Definitions. - The descriptions of message levels such as notice, warning and error are found in Severity Level Definitions. - faq answer - - - Test result for - result subheader - - - Created on - result test metadata - - - Zonemaster is a program designed to help people check, measure and hopefully also understand how the DNS (Domain Name System) works. - faq answer - - - It consists of several components: - faq answer - - - Engine - a test framework that supports all functionality to perform DNS tests. - faq answer - - - CLI - a command-line interface to the Engine. - faq answer - - - Bakend - a server that allows you to run Zonemaster tests and save results using a JSON-RPC API and a database. - faq answer - - - GUI - a web interface to the Backend. - faq answer - - - When a domain name (such as 'zonemaster.net') is submitted to Zonemaster (using CLI or GUI), it will verify the domain name’s general health with a series of tests. The tests conducted by Zonemaster can be found in the Defined Test Cases document. - faq answer - - - Users who are knowledgable about the DNS protocol. - faq answer - - - Secondly, all tests that Zonemaster runs are defined in Test Case specifications that can be found in the Defined Test Cases document. - faq answer - - - Thirdly, Zonemaster can be used to test undelegated domain names. See Question 12. - faq answer - Thirdly, Zonemaster can be used to test undelegated domain names. See Question 12. - - - Fourthly, Zonemaster can be used to test DS records before their publication in the parent zone (which is required to enable DNSSEC for a signed zone). See Question 13. - faq answer - Fourthly, Zonemaster can be used to test DS records before their publication in the parent zone (which is required to enable DNSSEC for a signed zone). See Question 13. - - - The judgement of Zonemaster is primarily based on the DNS standards as defined in RFCs. It also bases its judgement on DNS best practices, which can be more loosely defined. All Zonemaster tests are defined in Test Case Specifications in which the references to the standard documents for that test case are found. - faq answer - - - The GUI interface of Zonemaster does not show any queries sent, only the CLI interface can. If you want to see such queries, you will have to locally install a minimally working Zonemaster instance with both the Engine and CLI components (a Docker image is also available). Queries sent can be shown using the 'DEBUG' level option. Fair warning, the output from the CLI can be quite heavy. For more information see Using The CLI. - faq answer - - - Since Zonemaster.net is open to everyone it is possible for anyone to check your domain and its history of tests. However there is no way to tell who has run a specific test since nothing more than the test parameters and results are stored. Specifically, no cookies or information on the user's IP address is stored in the database. The user who initiated the test cannot be traced back from the information in the database. - faq answer - - - It depends on which test failed for your domain name. Each test are accompanied with one or several messages describing the issues found. You can also get further insight about each test from the Defined Test Cases document. - faq answer - - - Show options - form options - - - Hide options - form options - - - Name of nameserver # - form label - - - Address of nameserver # - form label - - - Key tag of DS record # - form label - - - Algorithm of DS record # - form label - - - Digest type of DS record # - form label - - - Digest of DS record # - form label - - - - diff --git a/src/locale/messages.fr.xlf b/src/locale/messages.fr.xlf deleted file mode 100644 index 67fdb93b..00000000 --- a/src/locale/messages.fr.xlf +++ /dev/null @@ -1,943 +0,0 @@ - - - - - - Close - Fermer - - - What is an undelegated domain test? - form info - Qu'est-ce qu'un test sur un nom de domaine non délégué ? - - - Parent data fetched with success. - Les données de la zone parente ont été récupérées avec succès. - - - Error during parent data fetching. - Erreur lors de la récupération des données de la zone parente. - - - FAQ - FAQ - - - Program versions - Versions des programmes - - - Zonemaster Backend is not available. - Zonemaster Backend n'est pas disponible. - - - Domain name required - form error - Le nom de domaine est obligatoire - - - Run a test - nav link - Lancer un test - - - Disable IPv4 - form label - Désactiver IPv4 - - - Disable IPv6 - form label - Désactiver IPv6 - - - Profile - form label - Profil - - - Nameservers - form section - Serveurs de noms - - - Keytag - form label - Identifiant - - - Keytag required - form error - Identifiant obligatoire - - - Algorithm - form label - Algorithme - - - Algorithm required - form error - L'algorithme est obligatoire - - - Digest type - form label - Type de condensat - - - Digest type required - form error - Le type de condensat est obligatoire - - - Digest - form label - Condensat - - - Digest required - form error - Le condensat est obligatoire - - - All - history button - Tous - - - Delegated - plural delegated - history button - Délégués - - - Undelegated - singular undelegated - history info - Non délégués - - - Undelegated - plural undelegated - history button - Non délégué - - - Results from previous tests are not available. - history info - Les résultats des tests précédents ne sont pas disponibles. - - - Click to return on the top page - nav button - Cliquer pour retourner en haut de la page - - - Error 404 - Erreur 404 - - - Page Not Found - Page introuvable - - - Sorry, there is nothing here! - Désolé, il n'y a rien ici ! - - - Result - result header - Résultat - - - History - result button - Historique - - - Export - result button - Exporter - - - Share - form button - Partager - - - All - all filter button - Tout - - - Info - info filter button - Info - - - Notice - notice filter button - Note - - - Warning - warning filter button - Avertissement - - - Error - error filter button - Erreur - - - Critical - critical filter button - Critique - - - No data for this test. - Il n'y a pas de résultat pour ce test. - - - History information request is in progress. - La demande d'historique est en cours. - - - Module - Module - - - Level - Sévérité - - - Message - Message - - - Please set the api endpoint - Merci de contacter l'administrateur, un point d'accès est nécessaire - - - A word about the DNS - À propos du DNS - - - Test completed! - Test terminé ! - - - Change language - nav label - Changer de langue - - - Name - form label - Nom - - - Cannot disable both IPv4 and IPv6 - form error - Impossible de désactiver IPv4 et IPv6 simultanément - - - No data found for the zone. - Aucune donnée trouvée pour la zone. - - - Fetch DS from parent zone - form button - Récupérer les DS depuis la zone parente - - - Link to test - result label - Lien vers le test - - - General - form section - Général - - - DS records - form section - Enregistrements DS - - - Clear domain input - form button - Effacer le champ du domaine - - - Copy link to clipboard - result button - Copier le lien dans le presse-papiers - - - Protocol - form section - Protocole - - - No previous tests found for this domain. - Aucun test antérieur n’a été trouvé pour ce domaine. - - - An unexpected server error happened. - Une erreur imprévue du serveur est survenue. - - - «« - «« - - - First - Aller au début - - - »» - »» - - - Last - Aller à la fin - - - » - » - - - Next - Suivant - - - « - « - - - Previous - Précédent - - - - - - - - - - - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - Lorsqu'un nom de domaine est envoyé à Zonemaster pour être testé, Zonemaster vérifie l'état du nom de domaine de haut vers bas de l'arborescence DNS. Cela est généralement fait en examinant les données DNS depuis la racine, « . » , au domaine de premier niveau (Top-Level Domain, TLD) pour ce nom de domaine, comme « .net », et enfin jusqu'aux serveurs de noms contenant des informations faisant autorité sur le nom de domaine spécifié. - - - More information on undelegated test: - form info - Plus d'information sur les tests non délégués : - - - Reset the form - form button - Réinitialiser le formulaire - - - Delete nameserver # - form button - Supprimer le serveur de noms # - - - What is Zonemaster? - Qu'est-ce que Zonemaster ? - - - Nameserver # - form section - Serveur de noms # - - - Run the test - form button - Lancer le test - - - The name of nameserver is required - form error - Le nom du serveur de noms est requis - - - Copyright © AFNIC and The Swedish Internet Foundation - footer - Copyright © AFNIC et The Swedish Internet Foundation - - - Delete DS record # - form button - Supprimer l'enregistrement DS # - - - Check how your domain is doing - Vérifier l'état de votre domaine - - - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - Le Système de Nom de Domaine (DNS) est une base de données qui associe des noms de domaine à des adresses IP (Internet Protocol), de la même manière qu’un annuaire associe des noms à des numéros de téléphone. Une adresse IP est un identifiant numérique unique qui identifie chaque ordinateur connecté à Internet, de la même manière que chaque téléphone a son propre numéro dans le réseau téléphonique. Ces identifiants numériques complexes conviennent parfaitement aux ordinateurs, mais sont beaucoup plus difficiles à mémoriser pour des humains. C’est pour cela que le DNS a été développé, pour établir une correspondance entre des noms que nous pouvons plus facilement retenir et les adresses IP utilisées par les ordinateurs lorsqu’on veut accéder à un site Web ou utiliser d’autres services sur Internet, comme le courriel. - - - Test your domain - Tester votre domaine - - - Collapse all - result filter messages - Replier tout - - - Filter severity levels - resut filter section - Filtrer les niveaux de sévérité - - - Test another domain - result subheader - Tester un autre domaine - - - Domain name - form label - Nom de domaine - - - DS record # - form section - Enregistrement DS # - - - Does Zonemaster support IPv6? - faq question - Zonemaster est-il compatible avec IPv6 ? - - - Can I test the DS records before they are published? - faq question - Peut-on tester des enregistrements DS avant leur publication ? - - - Documentation - footer - Documentation - - - What makes Zonemaster different from other DNS zone validating software? - faq question - Qu'est-ce qui distingue Zonemaster des autres outils de validation de zone DNS ? - - - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - faq answer - Pour tester une zone inverse, il faut d'abord déterminer le nom de la zone inverse, puis la saisir dans le format qu'elle a dans le DNS. Une zone inverse s'obtient en inversant une adresse IP et en ajoutant un suffixe. Les adresses IPv4 utilisent le suffixe « in-addr.arpa » tandis que les adresses IPv6 utilisent « ip6.arpa ». - - - There are several possibilities. - faq answer - Il y a plusieurs possibilités. - - - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - faq answer - Oui. Si DNSSEC est disponible pour un nom de domaine testé par Zonemaster, ce sera automatiquement vérifié. - - - Zonemaster and privacy - faq response - Zonemaster et vie privée - - - How can Zonemaster distinguish between what is right and wrong? - faq question - Comment Zonemaster discerne-t-il le bon du mauvais ? - - - Using Zonemaster - faq section header - Utilisation de Zonemaster - - - Zonemaster sends multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - faq answer - Zonemaster envoie plusieurs requêtes DNS aux serveurs de noms hébergeant le nom de domaine à tester ainsi qu'aux serveurs de noms hébergeant la zone parente du même nom de domaine. - - - Who is behind Zonemaster? - faq question - Qui est derrière Zonemaster ? - - - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - faq answer - Les utilisateurs et utilisatrices de la seconde catégorie devraient contacter leur opérateur DNS si le moindre test de leur nom de domaine rapporte une erreur ou un avertissement. - - - Your domain name is not reachable from public Internet. - faq answer - Votre domaine n'est pas joignable publiquement depuis Internet. - - - Frequently asked questions - faq header - Questions fréquentes - - - Your domain name is not yet delegated. - faq answer - Votre domaine n'est pas encore délégué. - - - This open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - faq answer - Cette version « open source » de Zonemaster a été écrite de manière modulaire, ce qui signifie en résumé qu'il est possible d'intégrer des parties de Zonemaster dans vos propres systèmes, si vous le souhaitez. Par exemple, on souhaite rarement utiliser un logiciel complet juste pour vérifier des redélégations. - - - Zonemaster can only test what is called a DNS zone, for example 'zonemaster.net', and not host names, like 'www.zonemaster.net'. - faq answer - Zonemaster peut seulement tester ce qu'on appelle une zone DNS, par exemple « zonemaster.net », et non pas les noms d'hôte, comme « www.zonemaster.net ». - - - Source code - footer - Code source - - - How can I test a "reverse" zone with Zonemaster? - faq answer - Comment tester une zone inverse avec Zonemaster ? - - - Find answers to common questions about Zonemaster here. - faq header - Trouvez ici les réponses aux questions les plus courantes sur Zonemaster. - - - How can Zonemaster help me? - faq question - Qu'est-ce que Zonemaster peut faire pour moi ? - - - General information - faq section header - Informations générales - - - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - faq response - Zonemaster affiche des « Erreurs » ou « Avertissements » pour mon nom de domaine. Qu'est-ce que cela signifie ? - - - What is Zonemaster? - faq question - Qu'est-ce que Zonemaster ? - - - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - Zonemaster réalise plusieurs tests, tels que la vérification des signatures DNSSEC, ou que les différents serveurs sont accessibles et que les adresses IP sont valides. Tout cela pour s’assurer que votre nom de domaine fonctionne aussi bien que possible. - - - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - faq answer - Parfois, les normes techniques ou les opinions de ce qui constitue une bonne pratique peuvent faire l'objet d'interprétations multiples ; l'équipe de Zonemaster est toujours ouverte aux commentaires. Si vous pensez que nous avons fait une erreur dans notre jugement, n'hésitez pas à nous envoyer un courriel à zonemaster-users@lists.iis.se (liste de diffusion modérée) avec un lien vers le résultat de votre test et en expliquant pourquoi vous pensez que Zonemaster affiche quelque chose que vous considérez comme incorrect. - - - Does Zonemaster verify DNSSEC? - faq question - Zonemaster vérifie-t-il DNSSEC ? - - - users who want to know whether the domain name they own or use have any issues or not. - faq answer - les utilisateurs et utilisatrices souhaitant savoir si les noms de domaine qu'ils possèdent ou utilisent ont des problèmes. - - - You have misspelled your domain name. - faq answer - Vous avez fait une faute de frappe dans le nom de domaine. - - - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - Donnez à votre nom de domaine un examen complet ! Zonemaster vous aide à évaluer l’état de votre nom de domaine. - - - What kind of DNS queries does Zonemaster generate? - faq question - Quel genre de requêtes DNS Zonemaster génère-t-il ? - - - Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - faq answer - Zonemaster conserve tout l'historique des tests réalisés sur un nom de domaine, ce qui signifie que vous pouvez revenir en arrière pour comparer les résultats d'un test remontant à un certain temps et ceux d'un test que vous avez lancé il y a un instant. - - - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - faq header - Vous ne trouvez pas l'information que vous cherchez ? Vous pouvez contacter l'équipe du projet Zonemaster en utilisant la liste de diffusion pour les utilisateurs et utilisatrices, le gestionnaire de tickets ou l'adresse de couriel de contact. - - - for IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa. - faq answer - pour le préfixe IPv6 « 2001:db8::/32 » : 8.b.d.0.1.0.0.2.ip6.arpa. - - - for IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa; - faq answer - pour le préfixe IPv4 « 198.51.100.0/24 » : 100.51.198.in-addr.arpa ; - - - There is a 10 minutes protection between consecutive tests for a given domain name, with same test parameters. Running a test within that window will instead show the last available test for that domain name, and parameters. - faq answer - Il y a une temporisation de dix minutes entre deux tests consécutifs d'un même nom de domaine, avec les mêmes paramètres de test. Lancer un second test dans cette fenêtre de temps donnera les résultats du dernier test effectué pour ce nom de domaine et ces paramètres, au lieu d'un nouveau test. - - - Examples: - faq answer - Exemple : - - - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Show options" button. - faq answer - Oui. Par défaut, Zonemaster interroge les serveurs de noms aussi bien en IPv4 qu'en IPv6, sauf si un paramètre de configuration prescrit le contraire. De tels paramètres de configuration sont accessibles en utilisant le bouton « Afficher les options ». - - - Zonemaster is a joint project between AFNIC, the registry of '.fr' TLD and several other TLDs like '.re', '.pm', '.tf', '.wf', '.yt' and '.paris', and The Swedish Internet Foundation, the registry of '.se' and '.nu' TLDs. - faq answer - Zonemaster est un projet conjoint entre l'Afnic, registre du TLD « .fr » ainsi que d'autres TLD, comme « .re », « .pm », « .tf », « .wf », « .yt » et « .paris » et The Swedish Internet Foundation, registre des TLD « .se » et « .nu ». - - - How come my domain name cannot be tested? - faq answer - Pourquoi mon nom de domaine n'a-t-il pas pu être testé ? - - - The Zonemaster tool could help different kind of users: - faq answer - Zonemaster peut aider différents types d'utilisateurs et utilisatrices : - - - What is an undelegated domain test? - faq answer - Qu'est-ce qu'un test sur un nom de domaine non délégué ? - - - Yes. Use the "Show options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - faq answer - Oui. Pour cela, utilisez le bouton « Afficher les options » et ajoutez-y les enregistrements DS à tester. Zonemaster utilisera ces entrées-là comme si elles avaient déjà été ajoutées dans la zone parente. - - - https://www.afnic.fr/en/ - Afnic link - https://www.afnic.fr - - - (optional) - form info - (facultatif) - - - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - result security level description - Le message indique un élément dont la personne administrant la zone devrait prendre connaissance sans qu’il ne s’agisse nécessairement d’un problème de configuration. - - - : - result colon - : - - - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - result security level description - Le message indique une information pouvant être utile pour la personne administrant la zone, mais qui n’est en aucun cas une anomalie. - - - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - result security level description - Le message indique un élément pouvant causer un dysfonctionnement dans certaines circonstances, mais qu’une personne non avertie a peu de chances de repérer. - - - Address - form label - Adresse - - - What is the meaning of the severity levels? - result info - Que signifient les niveaux de sévérité ? - - - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - result security level description - Le message indique une anomalie pouvant provoquer de façon (quasi) certaine un dysfonctionnement de la zone testée, sans être suffisamment grave pour rendre l’intégralité de la zone inaccessible. - - - Search text in messages - result filter messages - Rechercher dans les messages - - - The message means a very serious error. - result security level description - Le message indique une erreur très grave. - - - https://internetstiftelsen.se/en/ - IIS link - https://internetstiftelsen.se/en/ - - - Fetch nameservers from parent zone - form button - Récupérer les serveurs de noms depuis la zone parente - - - https://en.wikipedia.org/wiki/Request_for_Comments - RFC Wikipedia link - https://fr.wikipedia.org/wiki/Request_for_comments - - - Expand all modules - result filter messages - Déplier tous les modules - - - The descriptions of message levels such as NOTICE, WARNING and ERROR are found in Severity Level Definitions. - faq answer - Les descriptions de niveaux de messages comme Notice, Avertissement et Erreur se trouvent dans le document de définition des niveaux de sévérités (en anglais). - - - Test result for - result subheader - Résultat du test pour - - - Created on - result test metadata - Créé le - - - Show options - Afficher les options - form options - - - Hide options - Cacher les options - form options - - - Name of nameserver # - Nom du serveur de noms # - form label - - - Address of nameserver # - Adresse du serveur de noms # - form label - - - Key tag of DS record # - Identifiant de la clé de l'enregistrement DS # - form label - - - Algorithm of DS record # - Algorithme de l'enregistrement DS # - form label - - - Digest type of DS record # - Type de condensat de l'enregistrement DS # - form label - - - Digest of DS record # - Condensat de l'enregistrement DS # - form label - - - Zonemaster is a software package that validates the quality of a DNS delegation. - Zonemaster est un logiciel qui valide la qualité d'une délégation DNS. - faq answer - - - The ambition of the Zonemaster project is to develop and maintain an open source DNS validation tool, offering improved performance over existing tools and providing extensive documentation which could be re-used by similar projects in the future. - L'ambition du projet Zonemaster est de développer et de maintenir un outil de validation DNS open source, offrant des performances améliorées par rapport aux outils existants et fournissant une documentation complète qui pourrait être réutilisée par des projets similaires à l'avenir. - faq answer - - - Zonemaster consists of several modules or components: - Zonemaster est composé de plusieurs modules ou composants : - faq answer - - - Engine, a test framework that supports all functionality to perform DNS tests; - Engine, un cadriciel de tests prenant en charge toutes les fonctionnalités pour les tests DNS ; - faq answer - - - CLI, a command-line interface to the Engine; - CLI, une interface en ligne de commande à l'Engine ; - faq answer - - - Backend, a server that allows you to run Zonemaster tests and save results using a JSON-RPC API and a database; - Backend, un serveur permettant l'exécution de tests et la sauvegarde de résultats au moyen d'une API JSON-RPC et d'une base de données ; - faq answer - - - GUI, a web interface to the Backend. - GUI, une interface web au Backend. - faq answer - - - The components will help different types of users to check domain servers for configuration errors and generate a report that will assist in fixing the errors. - Ces composants aideront différents types d'utilisateurs et utilisatrices à vérifier les erreurs de configuration des serveurs de domaine et à générer un rapport qui aidera à corriger les erreurs. - faq answer - - - DNS administrators, experts and beginners alike, who want to check their DNS configuration; - les administrateurs et administratrices DNS, expertes comme débutants, qui veulent vérifier leur configuration DNS ; - faq answer - - - All tests that Zonemaster runs are defined in the Test Case Specification documents that can be found in the Test Case Specification documents. - Tous les tests qu'effectue Zonemaster sont définis dans des spécifications de cas de test, qui se trouvent dans les documents de spécifications de cas de test (en anglais). - faq answer - - - Zonemaster can be used to test undelegated domain names. - Zonemaster peut être utilisé pour tester des noms de domaines non délégués. - faq answer - - - Zonemaster can be used to test DS records before their publication in the parent zone. - Zonemaster peut être utilisé pour tester des enregistrements DS avant leur publication dans la zone parente. - faq answer - - - The judgement of Zonemaster is primarily based on the DNS standards as defined in RFCs. It also bases its judgement on DNS best practices, which can be more loosely defined. - Le jugement de Zonemaster repose principalement sur les normes techniques du DNS telles qu'elles sont définies dans les RFCs. Le jugement est également fondé sur les bonnes pratiques du DNS, dont la définition est moins stricte. - faq answer - - - All Zonemaster tests are defined in the Test Case Specification documents in which the references to the standard documents for each test case are found. - Tous les tests de Zonemaster sont définis dans les documents de spécifications de cas de test (en anglais), dans lesquels vous pourrez trouver les références aux documents normatifs pour chaque cas de test. - faq answer - - - The web interface of Zonemaster does not show the queries that were sent, only the CLI interface can. If you want to see such queries, you will have to locally install a minimally working Zonemaster instance with both the Engine and CLI components. See the CLI installation document for more information, or if you prefer a Docker image is also available. - L'interface web de Zonemaster n'affiche pas les requêtes envoyées, seule l'interface en ligne de commande en est capable. Si vous souhaitez voir ces requêtes, vous devez installer localement une instance minimale et fonctionnelle de Zonemaster doté des composants Engine et CLI. Vous pouvez consulter le document d'installation de la CLI (en anglais) pour plus d'information, ou, si vous préférez, une image Docker est aussi disponible. - faq answer - - - Queries sent can be shown using the 'DEBUG' level option. Fair warning, the output from the CLI can be quite heavy. For more information see CLI usage documentation. - Les requêtes envoyées peuvent être affichées avec l'option de niveau de messages 'DEBUG'. Attention, la quantité de données affichées par l'interface en ligne de commande peut être très volumineuse. Pour plus d'informations, consulter la documentation d'utilisation de l'interface en ligne de commandes (en anglais). - faq answer - - - Nothing besides the test domain, other test parameters and the result is stored in the database. Specifically we do not store any information that could link a test to the user who initiated it. - Rien hormis le domaine du test, les autres paramètres du test et le résultat n'est stocké dans la base de données. En particulier, nous ne stockons aucune information qui pourrait lier un test à la personne qui l'a initié. - faq answer - - - However, since zonemaster.net, like other public instances, is open to everyone, it is possible for anyone to test your domain and view its history of tests. - Toutefois, comme zonemaster.net, comme d'autres instances publiques, est accessible à tout le monde, n'importe qui peut tester votre domaine et consulter son historique de tests. - faq answer - - - It depends on which test failed for your domain name. Each test is accompanied with one or several messages describing the issues found. - Cela dépend du test ayant échoué pour votre nom de domaine. Chaque test est accompagné d'un ou plusieurs messages décrivant les problèmes qui ont été trouvés. - faq answer - - - You can also get further insight about each test from the Test Case Specification documents. - Vous pouvez également trouver des détails supplémentaires sur chaque test dans le document de spécification des cas de tests (en anglais). - faq answer - - - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. - Un test sur un nom de domaine non délégué est un test effectué sur un nom de domaine qui peut ne pas être entièrement publié dans le DNS. - faq answer - - - This can be quite useful if one is going to migrate one's domain from one registrar to another, for example, migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. - Ce type de test peut être très utile lorsqu'on est en train de migrer un domaine d'un bureau d'enregistrement vers un autre, par exemple lorsqu'on migre la zone « example.com » du serveur de noms « ns.example.com » vers le serveur de noms « ns.example.org ». Dans ce cas de figure, on pourrait effectuer un test sur un nom de domaine non délégué, en fournissant la zone (« example.com ») et le serveur de noms vers lequel on migre (« ns.example.org ») avant de migrer le domaine. - faq answer - - - When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - Si le résultat du test ne comporte aucune erreur ni avertissement, on peut être relativement certain que le nouvel emplacement du domaine fonctionne bien. Mais cela n'exclut pas l'existence d'autres problèmes dans les données elles-mêmes de la zone que ce test n'aurait pas décelés. - faq answer - - - Info - Info - - - Notice - Note - - - Warning - Avertissement - - - Error - Erreur - - - Critical - Critique - - - System - Système - - - Basic - Basique - - - Address - Adresse - - - Connectivity - Connectivité - - - Consistency - Cohérence - - - Delegation - Délégation - - - DNSSEC - DNSSEC - - - Nameserver - Serveur de nom - - - Syntax - Syntaxe - - - Zone - Zone - - - - \ No newline at end of file diff --git a/src/locale/messages.nb.xlf b/src/locale/messages.nb.xlf deleted file mode 100644 index 055b3a3b..00000000 --- a/src/locale/messages.nb.xlf +++ /dev/null @@ -1,815 +0,0 @@ - - - - - - Algorithm - Algoritme - form label - - - Algorithm required - Algoritme må angis - form error - - - All - Alle - history button - - - Digest - Digest - form label - - - Digest required - Digest må angis - form error - - - Digest type - Digest-type - form label - - - Digest type required - Digest-type må angis - form error - - - Disable IPv4 - Deaktiver IPv4 - form label - - - Disable IPv6 - Deaktiver IPv6 - form label - - - Domain name required - Domenenavn må angis - form error - - - Error during parent data fetching. - Feil når data ble hentet fra foreldresonen. - - - Export - Eksporter - result button - - - FAQ - FAQ - - - History - Historie - result button - - - History information request is in progress. - Historiske data hentes. - - - Keytag - Key tag - form label - - - Keytag required - Key tag må angis - form error - - - Nameservers - Navnetjener - form section - - - No data for this test. - Ingen data for denne sjekk. - - - Page Not Found - Siden ikke funnet - - - Parent data fetched with success. - Hentet data fra foreldresonen. - - - Please set the api endpoint - Vennligt angi API-endepunkt - - - Profile - Profil - form label - - - Program versions - Programversjon - - - Results from previous tests are not available. - Resultater fra tidligere tester er ikke tilgjengelig. - history info - - - Run a test - Start sjekk - nav link - - - Share - Del - form button - - - Sorry, there is nothing here! - Beklager, det er ingenting her! - - - What is an undelegated domain test? - Hva er en udelegert domenesjekk? - form info - - - Zonemaster Backend is not available. - Zonemaster Backend er ikke tilgjengelig. - - - Delegated - Delegerte - plural delegated - history button - - - Undelegated - Udelegerte - singular undelegated - history info - - - Undelegated - Udelegert - plural undelegated - history button - - - Click to return on the top page - Klikk for å gå tilbake til toppsiden - nav button - - - Error 404 - Feilkode 404 - - - Result - Resultat - result header - - - Close - Lukk - - - All - Alle - all filter button - - - Info - Informasjon - info filter button - - - Notice - Merknad - notice filter button - - - Warning - Advarsel - warning filter button - - - Error - Feil - error filter button - - - Critical - Kritisk feil - critical filter button - - - Module - Modul - - - Level - Nivå - - - Message - Melding - - - A word about the DNS - Om DNS - - - Name - Start sjekk - form label - - - Change language - Bytt språk - nav label - - - Test completed! - Test fullført! - - - Clear domain input - Fjern domenedata - form button - - - DS records - DS-poster - form section - - - General - Generell - form section - - - Protocol - Protokoll - form section - - - Cannot disable both IPv4 and IPv6 - Kan ikke deaktivere både IPv4 og IPv6 - form error - - - No data found for the zone. - Fant ingen data for sonen. - - - Link to test - Lenke til test - result label - - - Copy link to clipboard - Kopier lenken til utklippstavlen - result button - - - Fetch DS from parent zone - Hent DS-poster fra foreldresonen - form button - - - No previous tests found for this domain. - Ingen tidligere tester funnet for dette domenet. - - - An unexpected server error happened. - Det skjedde en uventet serverfeil. - - - «« - «« - - - « - « - - - » - » - - - »» - »» - - - First - Først - - - Previous - Tidligere - - - Next - Neste - - - Last - Siste - - - - - - - - - - - Check how your domain is doing - - - Test your domain - - - What is Zonemaster? - - - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - - - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - - - Copyright © AFNIC and The Swedish Internet Foundation - Copyright © AFNIC and The Swedish Internet Foundation - footer - - - Domain name - form label - Domenenavn - - - More information on undelegated test: - More information on undelegated test: - form info - - - Nameserver # - form section - - - The name of nameserver is required - The name of nameserver is required - form error - - - Delete nameserver # - form button - - - DS record # - form section - - - Delete DS record # - form button - - - Test another domain - result subheader - - - Filter severity levels - resut filter section - - - Collapse all - result filter messages - - - Run the test - Run the test - form button - - - Reset the form - form button - Reset the form - - - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - - - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - - - Frequently asked questions - Frequently asked questions - faq header - - - Find answers to common questions about Zonemaster here. - Find answers to common questions about Zonemaster here. - faq header - - - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - faq header - - - General information - General information - faq section header - - - What is Zonemaster? - What is Zonemaster? - faq question - - - Who is behind Zonemaster? - Who is behind Zonemaster? - faq question - - - Zonemaster is a joint project between AFNIC (registry of '.fr' TLD and several other TLDs, e.g. '.re', '.pm', '.tf', '.wf', '.yt' and '.paris') and The Swedish Internet Foundation (registry of '.se' and '.nu' TLDs). - Zonemaster is a joint project between AFNIC (registry of '.fr' TLD and several other TLDs, e.g. '.re', '.pm', '.tf', '.wf', '.yt' and '.paris') and The Swedish Internet Foundation (registry of '.se' and '.nu' TLDs). - faq answer - - - How can Zonemaster help me? - How can Zonemaster help me? - faq question - - - The Zonemaster tool could help different kind of users: - The Zonemaster tool could help different kind of users: - faq answer - - - Users who just want to know whether the domain name they own or use have any issues or not. - Users who just want to know whether the domain name they own or use have any issues or not. - faq answer - - - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - faq answer - - - What makes Zonemaster different from other DNS zone validating software? - What makes Zonemaster different from other DNS zone validating software? - faq question - - - Firstly, Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - Firstly, Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - faq answer - - - Lastly, this open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - Lastly, this open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - faq answer - - - How can Zonemaster distinguish between what is right and wrong? - How can Zonemaster distinguish between what is right and wrong? - faq question - - - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - faq answer - - - What kind of queries does Zonemaster generate? - What kind of queries does Zonemaster generate? - faq question - - - Zonemaster send multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - Zonemaster send multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - faq answer - - - Zonemaster and privacy - Zonemaster and privacy - faq response - - - Using Zonemaster - Using Zonemaster - faq section header - - - How come my domain name cannot be tested? - How come my domain name cannot be tested? - faq answer - - - There are several possibilities: - There are several possibilities: - faq answer - - - Your domain name is not yet delegated. - Your domain name is not yet delegated. - faq answer - - - Your domain name is not reachable from public Internet. - Your domain name is not reachable from public Internet. - faq answer - - - Zonemaster can only test what is called a DNS zone (e.g. 'zonemaster.net') and not host names (e.g. 'www.zonemaster.net') - Zonemaster can only test what is called a DNS zone (e.g. 'zonemaster.net') and not host names (e.g. 'www.zonemaster.net') - faq answer - - - There is a 10 minutes protection between consecutive tests for a given domain name (with same test parameters). Running a test within that window will instead show the last available test for that domain name (and parameters). - There is a 10 minutes protection between consecutive tests for a given domain name (with same test parameters). Running a test within that window will instead show the last available test for that domain name (and parameters). - faq answer - - - You have misspelled your domain name. - You have misspelled your domain name. - faq answer - - - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - faq response - - - What is an undelegated domain test? - What is an undelegated domain test? - faq answer - - - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. This can be quite useful if one is going to migrate one's domain from one registrar to another, e.g., migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. This can be quite useful if one is going to migrate one's domain from one registrar to another, e.g., migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - faq answer - - - Does Zonemaster support IPv6? - Does Zonemaster support IPv6? - faq question - - - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Options" button. - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Options" button. - faq answer - - - Does Zonemaster verify DNSSEC? - Does Zonemaster verify DNSSEC? - faq question - - - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - faq answer - - - Can I test the DS records before they are published? - Can I test the DS records before they are published? - faq question - - - Yes. Use the "Options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - Yes. Use the "Options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - faq answer - - - How can I test a "reverse" zone with Zonemaster? - How can I test a "reverse" zone with Zonemaster? - faq answer - - - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - faq answer - - - Examples: - Examples: - faq answer - - - For IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa - For IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa - faq answer - - - For IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa - For IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa - faq answer - - - Source code - Source code - footer - - - Documentation - Documentation - footer - - - https://www.afnic.fr/en/ - https://www.afnic.fr/en/ - Afnic link - - - Address - Address - form label - - - (optional) - (optional) - form info - - - What is the meaning of the severity levels? - What is the meaning of the severity levels? - result info - - - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - result security level description - - - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - result security level description - - - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - result security level description - - - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - result security level description - - - The message means a very serious error. - The message means a very serious error. - result security level description - - - Search text in messages - Search text in messages - result filter messages - - - : - : - result colon - - - https://internetstiftelsen.se/en/ - https://internetstiftelsen.se/en/ - IIS link - - - https://en.wikipedia.org/wiki/Request_for_Comments - https://en.wikipedia.org/wiki/Request_for_Comments - RFC Wikipedia link - - - Fetch nameservers from parent zone - Fetch nameservers from parent zone - form button - - - Expand all modules - Expand all modules - result filter messages - - - The descriptions of message levels such as notice, warning and error are found in Severity Level Definitions. - The descriptions of message levels such as notice, warning and error are found in Severity Level Definitions. - faq answer - - - Test result for - result subheader - - - Created on - result test metadata - - - Zonemaster is a program designed to help people check, measure and hopefully also understand how the DNS (Domain Name System) works. - faq answer - - - It consists of several components: - faq answer - - - Engine - a test framework that supports all functionality to perform DNS tests. - faq answer - - - CLI - a command-line interface to the Engine. - faq answer - - - Bakend - a server that allows you to run Zonemaster tests and save results using a JSON-RPC API and a database. - faq answer - - - GUI - a web interface to the Backend. - faq answer - - - When a domain name (such as 'zonemaster.net') is submitted to Zonemaster (using CLI or GUI), it will verify the domain name’s general health with a series of tests. The tests conducted by Zonemaster can be found in the Defined Test Cases document. - faq answer - - - Users who are knowledgable about the DNS protocol. - faq answer - - - Secondly, all tests that Zonemaster runs are defined in Test Case specifications that can be found in the Defined Test Cases document. - faq answer - - - Thirdly, Zonemaster can be used to test undelegated domain names. See Question 12. - faq answer - Thirdly, Zonemaster can be used to test undelegated domain names. See Question 12. - - - Fourthly, Zonemaster can be used to test DS records before their publication in the parent zone (which is required to enable DNSSEC for a signed zone). See Question 13. - faq answer - Fourthly, Zonemaster can be used to test DS records before their publication in the parent zone (which is required to enable DNSSEC for a signed zone). See Question 13. - - - The judgement of Zonemaster is primarily based on the DNS standards as defined in RFCs. It also bases its judgement on DNS best practices, which can be more loosely defined. All Zonemaster tests are defined in Test Case Specifications in which the references to the standard documents for that test case are found. - faq answer - - - The GUI interface of Zonemaster does not show any queries sent, only the CLI interface can. If you want to see such queries, you will have to locally install a minimally working Zonemaster instance with both the Engine and CLI components (a Docker image is also available). Queries sent can be shown using the 'DEBUG' level option. Fair warning, the output from the CLI can be quite heavy. For more information see Using The CLI. - faq answer - - - Since Zonemaster.net is open to everyone it is possible for anyone to check your domain and its history of tests. However there is no way to tell who has run a specific test since nothing more than the test parameters and results are stored. Specifically, no cookies or information on the user's IP address is stored in the database. The user who initiated the test cannot be traced back from the information in the database. - faq answer - - - It depends on which test failed for your domain name. Each test are accompanied with one or several messages describing the issues found. You can also get further insight about each test from the Defined Test Cases document. - faq answer - - - Show options - form options - - - Hide options - form options - - - Name of nameserver # - form label - - - Address of nameserver # - form label - - - Key tag of DS record # - form label - - - Algorithm of DS record # - form label - - - Digest type of DS record # - form label - - - Digest of DS record # - form label - - - - \ No newline at end of file diff --git a/src/locale/messages.sl.xlf b/src/locale/messages.sl.xlf deleted file mode 100755 index 40e1882a..00000000 --- a/src/locale/messages.sl.xlf +++ /dev/null @@ -1,834 +0,0 @@ - - - - - - Using Zonemaster - O Zonemaster - faq section header - - - Algorithm - Algoritem - form label - - - Algorithm required - Algoritem je obvezen - form error - - - All - Vse - history button - - - Digest - Izvleček - form label - - - Digest required - Izvleček je obvezen - form error - - - Digest type - Tip izvlečka - form label - - - Digest type required - Tip izvlečka je obvezen - form error - - - Disable IPv4 - Onemogoči IPv4 - form label - - - Disable IPv6 - Onemogoči IPv6 - form label - - - Domain name - Domena - form label - - - Domain name required - Domena je obvezna - form error - - - Error during parent data fetching. - Napaka med pridobivanjem podatkov. - - - Export - Izvozi - result button - - - FAQ - FAQ - - - History - Zgodovina - result button - - - History information request is in progress. - Pridobivanje zgodovine v teku. - - - Keytag - Keytag - form label - - - Keytag required - Keytag je obvezen - form error - - - Nameservers - Imenski strežniki - form section - - - No data for this test. - Ni podatkov za ta test. - - - (optional) - (možnosti) - form info - - - Page Not Found - Stran ne obstaja - - - Parent data fetched with success. - Podatki uspešno pridobljeni. - - - Please set the api endpoint - Prosimo nastavite API endpoint - - - Profile - Profil - form label - - - Program versions - Verzija programa - - - System - Ponastavi - - - Results from previous tests are not available. - Rezultati prejšnjega testa niso na voljo. - history info - - - Run a test - Zaženi test - nav link - - - Share - Deli - form button - - - Sorry, there is nothing here! - Pardon, tukaj ni nič ! - - - The message means a very serious error. - Kritično – zelo resna napaka. - result security level description - - - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - Napaka – težava, ki bo najverjetneje negativno vplivala na delovanje testirane cone, toda ni tako resna, da bi povzročila izpad. - result security level description - - - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - Info – podatek, ki bi lahko bil zanimiv za administratorja cone, zagotovo pa ne nakazuje nobene težave. - result security level description - - - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - Obvestilo - podatek, s katerim bi moral administrator cone biti seznanjen, ne nakazuje pa nobene težave. - result security level description - - - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - Opozorilo – nekaj, kar bi pod določenimi pogoji lahko povzročilo težave. - result security level description - - - What is an undelegated domain test? - Kaj je test nedelegirane domene? - form info - - - Zonemaster Backend is not available. - Zonemaster Backend ni na razpolago. - - - Delegated - Delegirano - plural delegated - history button - - - Undelegated - Nedelegirano - plural undelegated - history button - - - Undelegated - Nedelegirana - singular undelegated - history info - - - Click to return on the top page - Na vrh strani - nav button - - - Error 404 - Napaka 404 - - - Result - Rezultat - result header - - - Close - Zapri - - - All - Vse - all filter button - - - Info - Info - info filter button - - - Notice - Obvestilo - notice filter button - - - Warning - Opozorilo - warning filter button - - - Error - Napaka - error filter button - - - Critical - Kritično - critical filter button - - - Module - Modul - - - Level - Stopnja - - - Message - Sporočilo - - - A word about the DNS - O DNS - - - Zone - Zaženi - - - Change language - Spremeni jezik - nav label - - - Test completed! - Test končan! - - - Clear domain input - Počisti vnos - form button - - - Nameserver - Imenski strežnik - - - Address - Naslov IP - form label - - - DS records - DS zapisi - form section - - - General - Splošno - form section - - - Protocol - Protokol - form section - - - Cannot disable both IPv4 and IPv6 - Ni možno onemogočiti IPv4 in IPv6 - form error - - - No data found for the zone. - Ni podatkov. - - - Link to test - Povezava do testa - result label - - - Copy link to clipboard - Kopiraj povezavo - result button - - - Fetch DS from parent zone - Pridobi DS iz nadrejene cone - form button - - - No previous tests found for this domain. - Ni prejšnjih testov za to domeno. - - - An unexpected server error happened. - Nepričakovana napaka na strežniku. - - - «« - «« - - - « - « - - - » - » - - - »» - »» - - - First - Začetek - - - Previous - Nazaj - - - Next - Naprej - - - Last - Konec - - - - - - - - - - - Source code - Izvorna koda - footer - - - Documentation - Dokumentacija - footer - - - Check how your domain is doing - - - Test your domain - - - What is Zonemaster? - - - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - - - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - - - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - - - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - - - Frequently asked questions - faq header - - - Find answers to common questions about Zonemaster here. - faq header - - - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - faq header - - - General information - faq section header - - - What is Zonemaster? - faq question - - - Zonemaster is a software package that validates the quality of a DNS delegation. - faq answer - - - The ambition of the Zonemaster project is to develop and maintain an open source DNS validation tool, offering improved performance over existing tools and providing extensive documentation which could be re-used by similar projects in the future. - faq answer - - - Zonemaster consists of several modules or components: - faq answer - - - Engine, a test framework that supports all functionality to perform DNS tests; - faq answer - - - CLI, a command-line interface to the Engine; - faq answer - - - Backend, a server that allows you to run Zonemaster tests and save results using a JSON-RPC API and a database; - faq answer - - - GUI, a web interface to the Backend. - faq answer - - - The components will help different types of users to check domain servers for configuration errors and generate a report that will assist in fixing the errors. - faq answer - - - Who is behind Zonemaster? - faq question - - - Zonemaster is a joint project between AFNIC, the registry of '.fr' TLD and several other TLDs like '.re', '.pm', '.tf', '.wf', '.yt' and '.paris', and The Swedish Internet Foundation, the registry of '.se' and '.nu' TLDs. - faq answer - - - https://www.afnic.fr/en/ - Afnic link - - - https://internetstiftelsen.se/en/ - IIS link - - - How can Zonemaster help me? - faq question - - - The Zonemaster tool could help different kind of users: - faq answer - - - DNS administrators, experts and beginners alike, who want to check their DNS configuration; - faq answer - - - users who want to know whether the domain name they own or use have any issues or not. - faq answer - - - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - faq answer - - - What makes Zonemaster different from other DNS zone validating software? - faq question - - - Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - faq answer - - - All tests that Zonemaster runs are defined in the Test Case Specification documents that can be found in the Test Case Specification documents. - faq answer - - - Zonemaster can be used to test undelegated domain names. - faq answer - - - Zonemaster can be used to test DS records before their publication in the parent zone. - faq answer - - - This open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - faq answer - - - How can Zonemaster distinguish between what is right and wrong? - faq question - - - The judgement of Zonemaster is primarily based on the DNS standards as defined in RFCs. It also bases its judgement on DNS best practices, which can be more loosely defined. - faq answer - - - https://en.wikipedia.org/wiki/Request_for_Comments - RFC Wikipedia link - - - All Zonemaster tests are defined in the Test Case Specification documents in which the references to the standard documents for each test case are found. - faq answer - - - The descriptions of message levels such as NOTICE, WARNING and ERROR are found in Severity Level Definitions. - faq answer - - - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - faq answer - - - What kind of DNS queries does Zonemaster generate? - faq question - - - Zonemaster sends multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - faq answer - - - The web interface of Zonemaster does not show the queries that were sent, only the CLI interface can. If you want to see such queries, you will have to locally install a minimally working Zonemaster instance with both the Engine and CLI components. See the CLI installation document for more information, or if you prefer a Docker image is also available. - faq answer - - - Queries sent can be shown using the 'DEBUG' level option. Fair warning, the output from the CLI can be quite heavy. For more information see CLI usage documentation. - faq answer - - - Zonemaster and privacy - faq response - - - Nothing besides the test domain, other test parameters and the result is stored in the database. Specifically we do not store any information that could link a test to the user who initiated it. - faq answer - - - However, since zonemaster.net, like other public instances, is open to everyone, it is possible for anyone to test your domain and view its history of tests. - faq answer - - - How come my domain name cannot be tested? - faq answer - - - There are several possibilities. - faq answer - - - Your domain name is not yet delegated. - faq answer - - - Your domain name is not reachable from public Internet. - faq answer - - - Zonemaster can only test what is called a DNS zone, for example 'zonemaster.net', and not host names, like 'www.zonemaster.net'. - faq answer - - - There is a 10 minutes protection between consecutive tests for a given domain name, with same test parameters. Running a test within that window will instead show the last available test for that domain name, and parameters. - faq answer - - - You have misspelled your domain name. - faq answer - - - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - faq response - - - It depends on which test failed for your domain name. Each test is accompanied with one or several messages describing the issues found. - faq answer - - - You can also get further insight about each test from the Test Case Specification documents. - faq answer - - - What is an undelegated domain test? - faq answer - - - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. - faq answer - - - This can be quite useful if one is going to migrate one's domain from one registrar to another, for example, migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. - faq answer - - - When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - faq answer - - - Does Zonemaster support IPv6? - faq question - - - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Show options" button. - faq answer - - - Does Zonemaster verify DNSSEC? - faq question - - - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - faq answer - - - Can I test the DS records before they are published? - faq question - - - Yes. Use the "Show options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - faq answer - - - How can I test a "reverse" zone with Zonemaster? - faq answer - - - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - faq answer - - - Examples: - faq answer - - - for IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa; - faq answer - - - for IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa. - faq answer - - - Copyright © AFNIC and The Swedish Internet Foundation - footer - - - Show options - form options - - - Hide options - form options - - - More information on undelegated test: - form info - - - Nameserver # - form section - - - Name of nameserver # - form label - - - The name of nameserver is required - form error - - - Address of nameserver # - form label - - - Delete nameserver # - form button - - - Fetch nameservers from parent zone - form button - - - DS record # - form section - - - Key tag of DS record # - form label - - - The keytag must be a positive integer between 0 and 65535 - form error - - - Algorithm of DS record # - form label - - - Digest type of DS record # - form label - - - Digest of DS record # - form label - - - Delete DS record # - form button - - - Reset the form - form button - - - Test another domain - result subheader - - - Test result for - result subheader - - - Created on - result test metadata - - - Filter severity levels - resut filter section - - - What is the meaning of the severity levels? - result info - - - Search text in messages - result filter messages - - - Expand all modules - result filter messages - - - Collapse all - result filter messages - - - Notice - - - Warning - - - Error - - - Critical - - - Connectivity - - - Consistency - - - Delegation - - - DNSSEC - - - Syntax - - - Run the test - form button - - - : - result colon - - - Info - - - Address - - - Name - form label - - - Basic - - - - \ No newline at end of file diff --git a/src/locale/messages.sv.xlf b/src/locale/messages.sv.xlf deleted file mode 100644 index 2d5b90a1..00000000 --- a/src/locale/messages.sv.xlf +++ /dev/null @@ -1,815 +0,0 @@ - - - - - - Algorithm - Algoritm - form label - - - Algorithm required - Algoritm krävs - form error - - - All - Alla - history button - - - Digest - Digest - form label - - - Digest required - Digest krävs - form error - - - Digest type - Digest-typ - form label - - - Digest type required - Digest-typ krävs - form error - - - Disable IPv4 - Inaktivera IPv4 - form label - - - Disable IPv6 - Inaktivera IPv6 - form label - - - Domain name required - Domännamn måste anges - form error - - - Error during parent data fetching. - Fel när data skulle hämtas från moderzonen. - - - Export - Export - result button - - - FAQ - Vanliga frågor - - - History - Tidigare test - result button - - - History information request is in progress. - Begäran om att hämta tidigare testdata pågår. - - - Keytag - Keytag - form label - - - Keytag required - Keytag krävs - form error - - - Nameservers - Namnservrar - form section - - - No data for this test. - Data saknas för detta test. - - - Page Not Found - Sidan hittades inte - - - Parent data fetched with success. - Data hämtades från moderzonen utan problem. - - - Please set the api endpoint - Vänligen ställ in 'api endpoint' - - - Profile - Profil - form label - - - Program versions - Programversioner - - - Results from previous tests are not available. - Det finns inga resultat från tidigare test. - history info - - - Run a test - Kör test - nav link - - - Share - Dela - form button - - - Sorry, there is nothing here! - Tyvärr, det finns ingenting här! - - - What is an undelegated domain test? - Vad är ett odelegerat domäntest? - form info - - - Zonemaster Backend is not available. - Zonemaster-Backend är inte åtkomlig. - - - Delegated - Delegerade - plural delegated - history button - - - Undelegated - Odelegerade - singular undelegated - history info - - - Undelegated - Odelegerad - plural undelegated - history button - - - Click to return on the top page - Klicka för att komma tillbaka till överst på sidan - nav button - - - Error 404 - HTTP-fel 404 - - - Result - Resultat - result header - - - Close - Stäng - - - All - Alla - all filter button - - - Info - Info - info filter button - - - Notice - Notering - notice filter button - - - Warning - Varning - warning filter button - - - Error - Fel - error filter button - - - Critical - Allvarligt - critical filter button - - - Module - Modul - - - Level - Nivå - - - Message - Meddelande - - - A word about the DNS - Om DNS - - - Name - Kör - form label - - - Change language - Byt språk - nav label - - - Test completed! - Testet är färdigt! - - - Clear domain input - Rensa domännamnsfältet - form button - - - DS records - DS-post - form section - - - General - Generell - form section - - - Protocol - Standard - form section - - - Cannot disable both IPv4 and IPv6 - Det går inte att avaktivera både IPv4 och IPv6 - form error - - - No data found for the zone. - Det finns ingen data för zonen. - - - Link to test - Länk till test - result label - - - Copy link to clipboard - Kopiera länk till klippbuffert - result button - - - Fetch DS from parent zone - Hämta DS-poster från moderzon - form button - - - No previous tests found for this domain. - Det fanns inga tidigare test för detta domännamn. - - - An unexpected server error happened. - Ett oväntat fel inträffade i servern. - - - «« - «« - - - « - « - - - » - » - - - »» - »» - - - First - Första - - - Previous - Föregående - - - Next - Nästa - - - Last - Sista - - - - - - - - - - - Check how your domain is doing - - - Test your domain - - - What is Zonemaster? - - - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - - - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - - - Copyright © AFNIC and The Swedish Internet Foundation - Copyright © AFNIC and The Swedish Internet Foundation - footer - - - Domain name - form label - Domännamn - - - More information on undelegated test: - More information on undelegated test: - form info - - - Nameserver # - form section - - - The name of nameserver is required - The name of nameserver is required - form error - - - Delete nameserver # - form button - - - DS record # - form section - - - Delete DS record # - form button - - - Test another domain - result subheader - - - Filter severity levels - resut filter section - - - Collapse all - result filter messages - - - Run the test - Run the test - form button - - - Reset the form - form button - Reset the form - - - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - - - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - - - Frequently asked questions - Frequently asked questions - faq header - - - Find answers to common questions about Zonemaster here. - Find answers to common questions about Zonemaster here. - faq header - - - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - faq header - - - General information - General information - faq section header - - - What is Zonemaster? - What is Zonemaster? - faq question - - - Who is behind Zonemaster? - Who is behind Zonemaster? - faq question - - - Zonemaster is a joint project between AFNIC (registry of '.fr' TLD and several other TLDs, e.g. '.re', '.pm', '.tf', '.wf', '.yt' and '.paris') and The Swedish Internet Foundation (registry of '.se' and '.nu' TLDs). - Zonemaster is a joint project between AFNIC (registry of '.fr' TLD and several other TLDs, e.g. '.re', '.pm', '.tf', '.wf', '.yt' and '.paris') and The Swedish Internet Foundation (registry of '.se' and '.nu' TLDs). - faq answer - - - How can Zonemaster help me? - How can Zonemaster help me? - faq question - - - The Zonemaster tool could help different kind of users: - The Zonemaster tool could help different kind of users: - faq answer - - - Users who just want to know whether the domain name they own or use have any issues or not. - Users who just want to know whether the domain name they own or use have any issues or not. - faq answer - - - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - faq answer - - - What makes Zonemaster different from other DNS zone validating software? - What makes Zonemaster different from other DNS zone validating software? - faq question - - - Firstly, Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - Firstly, Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - faq answer - - - Lastly, this open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - Lastly, this open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - faq answer - - - How can Zonemaster distinguish between what is right and wrong? - How can Zonemaster distinguish between what is right and wrong? - faq question - - - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - faq answer - - - What kind of queries does Zonemaster generate? - What kind of queries does Zonemaster generate? - faq question - - - Zonemaster send multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - Zonemaster send multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - faq answer - - - Zonemaster and privacy - Zonemaster and privacy - faq response - - - Using Zonemaster - Using Zonemaster - faq section header - - - How come my domain name cannot be tested? - How come my domain name cannot be tested? - faq answer - - - There are several possibilities: - There are several possibilities: - faq answer - - - Your domain name is not yet delegated. - Your domain name is not yet delegated. - faq answer - - - Your domain name is not reachable from public Internet. - Your domain name is not reachable from public Internet. - faq answer - - - Zonemaster can only test what is called a DNS zone (e.g. 'zonemaster.net') and not host names (e.g. 'www.zonemaster.net') - Zonemaster can only test what is called a DNS zone (e.g. 'zonemaster.net') and not host names (e.g. 'www.zonemaster.net') - faq answer - - - There is a 10 minutes protection between consecutive tests for a given domain name (with same test parameters). Running a test within that window will instead show the last available test for that domain name (and parameters). - There is a 10 minutes protection between consecutive tests for a given domain name (with same test parameters). Running a test within that window will instead show the last available test for that domain name (and parameters). - faq answer - - - You have misspelled your domain name. - You have misspelled your domain name. - faq answer - - - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - faq response - - - What is an undelegated domain test? - What is an undelegated domain test? - faq answer - - - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. This can be quite useful if one is going to migrate one's domain from one registrar to another, e.g., migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. This can be quite useful if one is going to migrate one's domain from one registrar to another, e.g., migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - faq answer - - - Does Zonemaster support IPv6? - Does Zonemaster support IPv6? - faq question - - - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Options" button. - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Options" button. - faq answer - - - Does Zonemaster verify DNSSEC? - Does Zonemaster verify DNSSEC? - faq question - - - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - faq answer - - - Can I test the DS records before they are published? - Can I test the DS records before they are published? - faq question - - - Yes. Use the "Options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - Yes. Use the "Options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - faq answer - - - How can I test a "reverse" zone with Zonemaster? - How can I test a "reverse" zone with Zonemaster? - faq answer - - - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - faq answer - - - Examples: - Examples: - faq answer - - - For IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa - For IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa - faq answer - - - For IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa - For IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa - faq answer - - - Source code - Source code - footer - - - Documentation - Documentation - footer - - - https://www.afnic.fr/en/ - https://www.afnic.fr/en/ - Afnic link - - - Address - Address - form label - - - (optional) - (optional) - form info - - - What is the meaning of the severity levels? - What is the meaning of the severity levels? - result info - - - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - result security level description - - - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - result security level description - - - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - result security level description - - - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - result security level description - - - The message means a very serious error. - The message means a very serious error. - result security level description - - - Search text in messages - Search text in messages - result filter messages - - - : - : - result colon - - - https://internetstiftelsen.se/en/ - https://internetstiftelsen.se/en/ - IIS link - - - https://en.wikipedia.org/wiki/Request_for_Comments - https://en.wikipedia.org/wiki/Request_for_Comments - RFC Wikipedia link - - - Fetch nameservers from parent zone - Fetch nameservers from parent zone - form button - - - Expand all modules - Expand all modules - result filter messages - - - The descriptions of message levels such as notice, warning and error are found in Severity Level Definitions. - The descriptions of message levels such as notice, warning and error are found in Severity Level Definitions. - faq answer - - - Test result for - result subheader - - - Created on - result test metadata - - - Zonemaster is a program designed to help people check, measure and hopefully also understand how the DNS (Domain Name System) works. - faq answer - - - It consists of several components: - faq answer - - - Engine - a test framework that supports all functionality to perform DNS tests. - faq answer - - - CLI - a command-line interface to the Engine. - faq answer - - - Bakend - a server that allows you to run Zonemaster tests and save results using a JSON-RPC API and a database. - faq answer - - - GUI - a web interface to the Backend. - faq answer - - - When a domain name (such as 'zonemaster.net') is submitted to Zonemaster (using CLI or GUI), it will verify the domain name’s general health with a series of tests. The tests conducted by Zonemaster can be found in the Defined Test Cases document. - faq answer - - - Users who are knowledgable about the DNS protocol. - faq answer - - - Secondly, all tests that Zonemaster runs are defined in Test Case specifications that can be found in the Defined Test Cases document. - faq answer - - - Thirdly, Zonemaster can be used to test undelegated domain names. See Question 12. - faq answer - Thirdly, Zonemaster can be used to test undelegated domain names. See Question 12. - - - Fourthly, Zonemaster can be used to test DS records before their publication in the parent zone (which is required to enable DNSSEC for a signed zone). See Question 13. - faq answer - Fourthly, Zonemaster can be used to test DS records before their publication in the parent zone (which is required to enable DNSSEC for a signed zone). See Question 13. - - - The judgement of Zonemaster is primarily based on the DNS standards as defined in RFCs. It also bases its judgement on DNS best practices, which can be more loosely defined. All Zonemaster tests are defined in Test Case Specifications in which the references to the standard documents for that test case are found. - faq answer - - - The GUI interface of Zonemaster does not show any queries sent, only the CLI interface can. If you want to see such queries, you will have to locally install a minimally working Zonemaster instance with both the Engine and CLI components (a Docker image is also available). Queries sent can be shown using the 'DEBUG' level option. Fair warning, the output from the CLI can be quite heavy. For more information see Using The CLI. - faq answer - - - Since Zonemaster.net is open to everyone it is possible for anyone to check your domain and its history of tests. However there is no way to tell who has run a specific test since nothing more than the test parameters and results are stored. Specifically, no cookies or information on the user's IP address is stored in the database. The user who initiated the test cannot be traced back from the information in the database. - faq answer - - - It depends on which test failed for your domain name. Each test are accompanied with one or several messages describing the issues found. You can also get further insight about each test from the Defined Test Cases document. - faq answer - - - Show options - form options - - - Hide options - form options - - - Name of nameserver # - form label - - - Address of nameserver # - form label - - - Key tag of DS record # - form label - - - Algorithm of DS record # - form label - - - Digest type of DS record # - form label - - - Digest of DS record # - form label - - - - \ No newline at end of file diff --git a/src/locale/messages.xlf b/src/locale/messages.xlf deleted file mode 100644 index 59df91fa..00000000 --- a/src/locale/messages.xlf +++ /dev/null @@ -1,1577 +0,0 @@ - - - - - - Close - - src/app/components/alert/alert.component.html - 5 - - - src/app/components/alert/alert.component.html - 5 - - - src/app/components/result/result.component.html - 225 - - - src/app/components/result/result.component.html - 225 - - - - What is an undelegated domain test? - - src/app/components/form/form.component.html - 67 - - form info - - - Parent data fetched with success. - - src/app/components/form/form.component.ts - 179 - - - - Error during parent data fetching. - - src/app/components/run-test/run-test.component.ts - 55 - - - - FAQ - - src/app/components/faq/faq.component.ts - 21 - - - src/app/components/navigation/navigation.component.html - 18 - - - - Program versions - - src/app/components/footer/footer.component.html - 6 - - - - Zonemaster Backend is not available. - - src/app/components/footer/footer.component.ts - 42 - - - - Domain name required - - src/app/components/form/form.component.html - 15 - - form error - - - Run a test - - src/app/components/navigation/navigation.component.html - 15 - - nav link - - - Disable IPv4 - - src/app/components/form/form.component.html - 285 - - form label - - - Disable IPv6 - - src/app/components/form/form.component.html - 297 - - form label - - - Profile - - src/app/components/form/form.component.html - 309 - - form label - - - Nameservers - - src/app/components/form/form.component.html - 73 - - form section - - - Keytag - - src/app/components/form/form.component.html - 146 - - form label - - - Keytag required - - src/app/components/form/form.component.html - 164 - - form error - - - Algorithm - - src/app/components/form/form.component.html - 168 - - form label - - - Algorithm required - - src/app/components/form/form.component.html - 198 - - form error - - - Digest type - - src/app/components/form/form.component.html - 202 - - form label - - - Digest type required - - src/app/components/form/form.component.html - 223 - - form error - - - Digest - - src/app/components/form/form.component.html - 227 - - form label - - - Digest required - - src/app/components/form/form.component.html - 243 - - form error - - - All - - src/app/components/history/history.component.html - 9 - - history button - - - Delegated - - src/app/components/history/history.component.html - 15 - - plural delegated - history button - - - Undelegated - - src/app/components/history/history.component.html - 30 - - singular undelegated - history info - - - Undelegated - - src/app/components/history/history.component.html - 21 - - plural undelegated - history button - - - Results from previous tests are not available. - - src/app/components/history/history.component.html - 47 - - history info - - - Click to return on the top page - - src/app/components/navigation/navigation.component.html - 39 - - nav button - - - Error 404 - - src/app/components/page-not-found/page-not-found.component.html - 2 - - - - Page Not Found - - src/app/components/page-not-found/page-not-found.component.html - 5 - - - - Sorry, there is nothing here! - - src/app/components/page-not-found/page-not-found.component.html - 6 - - - - Result - - src/app/components/result/result.component.html - 2 - - result header - - - History - - src/app/components/result/result.component.html - 19 - - - src/app/components/result/result.component.html - 224 - - result button - - - Export - - src/app/components/result/result.component.html - 26 - - result button - - - Share - - src/app/components/result/result.component.html - 41 - - form button - - - All - - src/app/components/result/result.component.html - 72 - - all filter button - - - Info - - src/app/components/result/result.component.html - 79 - - - src/app/components/result/result.component.html - 121 - - info filter button - - - Notice - - src/app/components/result/result.component.html - 86 - - - src/app/components/result/result.component.html - 126 - - notice filter button - - - Warning - - src/app/components/result/result.component.html - 93 - - - src/app/components/result/result.component.html - 131 - - warning filter button - - - Error - - src/app/components/result/result.component.html - 100 - - - src/app/components/result/result.component.html - 136 - - error filter button - - - Critical - - src/app/components/result/result.component.html - 107 - - - src/app/components/result/result.component.html - 142 - - critical filter button - - - No data for this test. - - src/app/components/result/result.component.ts - 188 - - - - History information request is in progress. - - src/app/components/result/result.component.ts - 275 - - - - Module - - src/app/components/result/result.component.ts - 359 - - - - Level - - src/app/components/result/result.component.ts - 360 - - - - Message - - src/app/components/result/result.component.ts - 361 - - - - Please set the api endpoint - - src/app/services/dns-check.service.ts - 19 - - - - A word about the DNS - - src/app/components/domain/domain.component.html - 34 - - - - Test completed! - - src/app/components/run-test/run-test.component.ts - 83 - - - - Change language - - src/app/components/navigation/navigation.component.html - 22 - - - src/app/components/navigation/navigation.component.html - 25 - - nav label - - - Name - - src/app/components/form/form.component.html - 79 - - form label - - - Cannot disable both IPv4 and IPv6 - - src/app/components/form/form.component.html - 301 - - form error - - - No data found for the zone. - - src/app/components/form/form.component.ts - 174 - - - - Fetch DS from parent zone - - src/app/components/form/form.component.html - 263 - - form button - - - Link to test - - src/app/components/result/result.component.html - 45 - - result label - - - General - - src/app/components/form/form.component.html - 270 - - form section - - - DS records - - src/app/components/form/form.component.html - 141 - - form section - - - Clear domain input - - src/app/components/form/form.component.html - 27 - - form button - - - Copy link to clipboard - - src/app/components/result/result.component.html - 46 - - - src/app/components/result/result.component.html - 48 - - result button - - - Protocol - - src/app/components/form/form.component.html - 273 - - form section - - - No previous tests found for this domain. - - src/app/components/result/result.component.ts - 280 - - - - An unexpected server error happened. - - src/app/components/run-test/run-test.component.ts - 98 - - - - «« - - node_modules/src/pagination/pagination.ts - 247,249 - - - - First - - node_modules/src/pagination/pagination.ts - 322,323 - - - - »» - - node_modules/src/pagination/pagination.ts - 305,307 - - - - Last - - node_modules/src/pagination/pagination.ts - 363,365 - - - - » - - node_modules/src/pagination/pagination.ts - 290 - - - - Next - - node_modules/src/pagination/pagination.ts - 350 - - - - « - - node_modules/src/pagination/pagination.ts - 266 - - - - Previous - - node_modules/src/pagination/pagination.ts - 338 - - - - - - - - node_modules/src/progressbar/progressbar.ts - 64,67 - - - - When a domain name is sent to Zonemaster for testing, Zonemaster investigates the state of the domain name from the top to the bottom of the DNS tree. This is usually done by examining DNS data from the root, '.', to the Top-Level Domain (TLD) for that domain name, like '.net', and then finally through the DNS servers that contain authoritative information about the specified domain name. - - src/app/components/domain/domain.component.html - 16,23 - - - - More information on undelegated test: - - src/app/components/form/form.component.html - 66 - - form info - - - Reset the form - - src/app/components/form/form.component.html - 334 - - form button - - - Delete nameserver # - - src/app/components/form/form.component.html - 124 - - form button - - - What is Zonemaster? - - src/app/components/domain/domain.component.html - 11 - - - - Nameserver # - - src/app/components/form/form.component.html - 77 - - form section - - - Run the test - - src/app/components/form/form.component.html - 342 - - form button - - - The name of nameserver is required - - src/app/components/form/form.component.html - 95 - - form error - - - Copyright © AFNIC and The Swedish Internet Foundation - - src/app/components/footer/footer.component.html - 26,28 - - footer - - - Delete DS record # - - src/app/components/form/form.component.html - 253 - - form button - - - Check how your domain is doing - - src/app/components/domain/domain.component.html - 2 - - - - The Domain Name System (DNS) is a database that associates domain names to Internet Protocol (IP) addresses, the same way a phone book associates names to phone numbers. An IP address is a unique series of numbers that identifies every computer that is connected to the Internet. It is similar to the way every telephone has its own number in the telephone network. Such long series of numbers work fine for computers, but for people it is way more difficult to memorize. Thus, the DNS has been developed as an extra layer to map between names that we can remember better and IP addresses used by computers whenever we want to reach a specific website or use other services on the Internet, like e-mail. - - src/app/components/domain/domain.component.html - 35,45 - - - - Test your domain - - src/app/components/domain/domain.component.html - 4 - - - - Collapse all - - src/app/components/result/result.component.html - 161 - - result filter messages - - - Filter severity levels - - src/app/components/result/result.component.html - 65 - - resut filter section - - - Test another domain - - src/app/components/result/result.component.html - 4 - - result subheader - - - Domain name - - src/app/components/form/form.component.html - 3 - - form label - - - DS record # - - src/app/components/form/form.component.html - 144 - - form section - - - Does Zonemaster support IPv6? - - src/app/components/faq/faq.component.html - 178,180 - - faq question - - - Can I test the DS records before they are published? - - src/app/components/faq/faq.component.html - 196,198 - - faq question - - - Documentation - - src/app/components/footer/footer.component.html - 20 - - footer - - - What makes Zonemaster different from other DNS zone validating software? - - src/app/components/faq/faq.component.html - 59,61 - - faq question - - - To check a reverse zone with Zonemaster, one first needs to know what the reverse zone is, and enter it in the format it has in the DNS. A reserve zone is obtained by reversing an IP address and adding a suffix. IPv4 addresses use the suffix "in-addr.arpa" while IPv6 addresses use "ip6.arpa". - - src/app/components/faq/faq.component.html - 208,210 - - faq answer - - - There are several possibilities. - - src/app/components/faq/faq.component.html - 137,139 - - faq answer - - - The ambition of the Zonemaster project is to develop and maintain an open source DNS validation tool, offering improved performance over existing tools and providing extensive documentation which could be re-used by similar projects in the future. - - src/app/components/faq/faq.component.html - 20 - - faq answer - - - Yes. If DNSSEC is available for a domain name that is tested by Zonemaster, it will be checked automatically. - - src/app/components/faq/faq.component.html - 190,192 - - faq answer - - - Zonemaster and privacy - - src/app/components/faq/faq.component.html - 118,120 - - faq response - - - CLI, a command-line interface to the Engine; - - src/app/components/faq/faq.component.html - 25 - - faq answer - - - Nothing besides the test domain, other test parameters and the result is stored in the database. Specifically we do not store any information that could link a test to the user who initiated it. - - src/app/components/faq/faq.component.html - 121,123 - - faq answer - - - How can Zonemaster distinguish between what is right and wrong? - - src/app/components/faq/faq.component.html - 82,84 - - faq question - - - The components will help different types of users to check domain servers for configuration errors and generate a report that will assist in fixing the errors. - - src/app/components/faq/faq.component.html - 30 - - faq answer - - - The judgement of Zonemaster is primarily based on the DNS standards as defined in RFCs. It also bases its judgement on DNS best practices, which can be more loosely defined. - - src/app/components/faq/faq.component.html - 85,87 - - faq answer - - - Zonemaster can be used to test DS records before their publication in the parent zone. - - src/app/components/faq/faq.component.html - 72,74 - - faq answer - - - Using Zonemaster - - src/app/components/faq/faq.component.html - 131 - - faq section header - - - GUI, a web interface to the Backend. - - src/app/components/faq/faq.component.html - 27 - - faq answer - - - Zonemaster sends multiple DNS queries to the name servers hosting the domain name being tested and also to the name servers hosting the parent zone of that domain name. - - src/app/components/faq/faq.component.html - 105,107 - - faq answer - - - Who is behind Zonemaster? - - src/app/components/faq/faq.component.html - 34,36 - - faq question - - - Users of the second category should contact their DNS operator in case there are errors or warnings for any test of their domain name. - - src/app/components/faq/faq.component.html - 55 - - faq answer - - - Your domain name is not reachable from public Internet. - - src/app/components/faq/faq.component.html - 142 - - faq answer - - - Frequently asked questions - - src/app/components/faq/faq.component.html - 2 - - faq header - - - Your domain name is not yet delegated. - - src/app/components/faq/faq.component.html - 141 - - faq answer - - - You can also get further insight about each test from the Test Case Specification documents. - - src/app/components/faq/faq.component.html - 156,158 - - faq answer - - - This open source version of Zonemaster was built using modular code which basically means that you can integrate parts of it in your own systems, if you wish. For example, it is quite rare that you would want a complete program just to check for redelegations. - - src/app/components/faq/faq.component.html - 75,77 - - faq answer - - - Zonemaster can only test what is called a DNS zone, for example 'zonemaster.net', and not host names, like 'www.zonemaster.net'. - - src/app/components/faq/faq.component.html - 143 - - faq answer - - - Queries sent can be shown using the 'DEBUG' level option. Fair warning, the output from the CLI can be quite heavy. For more information see CLI usage documentation. - - src/app/components/faq/faq.component.html - 111,113 - - faq answer - - - Source code - - src/app/components/footer/footer.component.html - 15 - - footer - - - How can I test a "reverse" zone with Zonemaster? - - src/app/components/faq/faq.component.html - 205,207 - - faq answer - - - Find answers to common questions about Zonemaster here. - - src/app/components/faq/faq.component.html - 3,5 - - faq header - - - Zonemaster consists of several modules or components: - - src/app/components/faq/faq.component.html - 22 - - faq answer - - - An undelegated domain test is a test performed on a domain name that may, or may not, be fully published in the DNS. - - src/app/components/faq/faq.component.html - 166,168 - - faq answer - - - How can Zonemaster help me? - - src/app/components/faq/faq.component.html - 44,46 - - faq question - - - General information - - src/app/components/faq/faq.component.html - 13 - - faq section header - - - Zonemaster returns "Error" or "Warning" for my domain name. What does it mean? - - src/app/components/faq/faq.component.html - 150,152 - - faq response - - - What is Zonemaster? - - src/app/components/faq/faq.component.html - 15,17 - - faq question - - - All Zonemaster tests are defined in the Test Case Specification documents in which the references to the standard documents for each test case are found. - - src/app/components/faq/faq.component.html - 89,91 - - faq answer - - - Zonemaster performs many tests, such as checking DNSSEC signatures, or that different hosts can be accessed and that IP addresses are valid. This is all to make sure that your domain name runs as smoothly as possible. - - src/app/components/domain/domain.component.html - 25,28 - - - - The web interface of Zonemaster does not show the queries that were sent, only the CLI interface can. If you want to see such queries, you will have to locally install a minimally working Zonemaster instance with both the Engine and CLI components. See the CLI installation document for more information, or if you prefer a Docker image is also available. - - src/app/components/faq/faq.component.html - 108,110 - - faq answer - - - Sometimes there are different interpretations of the standards or opinions on what is best practice, and the Zonemaster team is always open to input. If you think we have made a mistake in our judgement please do not hesitate to send us an email at zonemaster-users@lists.iis.se (moderated mailing list) with a link to your test result and an explanation as to why you think it shows something that you consider incorrect. - - src/app/components/faq/faq.component.html - 96,98 - - faq answer - - - Does Zonemaster verify DNSSEC? - - src/app/components/faq/faq.component.html - 187,189 - - faq question - - - users who want to know whether the domain name they own or use have any issues or not. - - src/app/components/faq/faq.component.html - 52 - - faq answer - - - You have misspelled your domain name. - - src/app/components/faq/faq.component.html - 145 - - faq answer - - - Give your domain name a complete checkup! Zonemaster helps you assess how your domain name is doing. - - src/app/components/domain/domain.component.html - 12,14 - - - - What kind of DNS queries does Zonemaster generate? - - src/app/components/faq/faq.component.html - 102,104 - - faq question - - - However, since zonemaster.net, like other public instances, is open to everyone, it is possible for anyone to test your domain and view its history of tests. - - src/app/components/faq/faq.component.html - 124,126 - - faq answer - - - Zonemaster saves all history from earlier tests based on the tested domain name, which means you can go back to a test you did some time ago and compare it to the test you ran just a moment ago. - - src/app/components/faq/faq.component.html - 63,65 - - faq answer - - - You still don't find the information you are looking for? You can contact the Zonemaster project team using the user mailing list, the issue tracker or the contact e-mail address. - - src/app/components/faq/faq.component.html - 6,9 - - faq header - - - Engine, a test framework that supports all functionality to perform DNS tests; - - src/app/components/faq/faq.component.html - 24 - - faq answer - - - It depends on which test failed for your domain name. Each test is accompanied with one or several messages describing the issues found. - - src/app/components/faq/faq.component.html - 153,155 - - faq answer - - - Zonemaster is a software package that validates the quality of a DNS delegation. - - src/app/components/faq/faq.component.html - 19 - - faq answer - - - for IPv6 prefix '2001:db8::/32': 8.b.d.0.1.0.0.2.ip6.arpa. - - src/app/components/faq/faq.component.html - 214 - - faq answer - - - for IPv4 prefix '198.51.100.0/24': 100.51.198.in-addr.arpa; - - src/app/components/faq/faq.component.html - 213 - - faq answer - - - There is a 10 minutes protection between consecutive tests for a given domain name, with same test parameters. Running a test within that window will instead show the last available test for that domain name, and parameters. - - src/app/components/faq/faq.component.html - 144 - - faq answer - - - Examples: - - src/app/components/faq/faq.component.html - 211 - - faq answer - - - Yes. By default Zonemaster will query name servers both over IPv4 and IPv6, unless explicitly configured otherwise. Such configuration is accessible through the "Show options" button. - - src/app/components/faq/faq.component.html - 181,183 - - faq answer - - - Zonemaster can be used to test undelegated domain names. - - src/app/components/faq/faq.component.html - 69,71 - - faq answer - - - Zonemaster is a joint project between AFNIC, the registry of '.fr' TLD and several other TLDs like '.re', '.pm', '.tf', '.wf', '.yt' and '.paris', and The Swedish Internet Foundation, the registry of '.se' and '.nu' TLDs. - - src/app/components/faq/faq.component.html - 38,40 - - faq answer - - - How come my domain name cannot be tested? - - src/app/components/faq/faq.component.html - 134,136 - - faq answer - - - The Zonemaster tool could help different kind of users: - - src/app/components/faq/faq.component.html - 48 - - faq answer - - - All tests that Zonemaster runs are defined in the Test Case Specification documents that can be found in the Test Case Specification documents. - - src/app/components/faq/faq.component.html - 66,68 - - faq answer - - - What is an undelegated domain test? - - src/app/components/faq/faq.component.html - 163,165 - - faq answer - - - Yes. Use the "Show options" button and there add the Delegation Signer (DS) records to be tested. Zonemaster will then use those in the same way as if they were already added in the parent zone. - - src/app/components/faq/faq.component.html - 199,201 - - faq answer - - - https://www.afnic.fr/en/ - - src/app/components/faq/faq.component.html - 39 - - Afnic link - - - (optional) - - src/app/components/form/form.component.html - 100 - - form info - - - The message means something that should be known by the zone's administrator but that need not necessarily be a problem at all. - - src/app/components/result/result.component.html - 127,130 - - result security level description - - - : - - src/app/components/result/result.component.html - 179 - - result colon - - - The message is something that may be of interest to the zone's administrator but that definitely does not indicate a problem. - - src/app/components/result/result.component.html - 122,125 - - result security level description - - - The message means something that will under some circumstances be a problem, but that is unlikely to be noticed by a casual user. - - src/app/components/result/result.component.html - 132,135 - - result security level description - - - Address - - src/app/components/form/form.component.html - 100 - - form label - - - What is the meaning of the severity levels? - - src/app/components/result/result.component.html - 118 - - result info - - - The message means a problem that is very likely (or possibly certain) to negatively affect the function of the zone being tested, but not so severe that the entire zone becomes unresolvable. - - src/app/components/result/result.component.html - 137,141 - - result security level description - - - Search text in messages - - src/app/components/result/result.component.html - 151 - - result filter messages - - - The message means a very serious error. - - src/app/components/result/result.component.html - 143,145 - - result security level description - - - https://internetstiftelsen.se/en/ - - src/app/components/faq/faq.component.html - 39 - - IIS link - - - Fetch nameservers from parent zone - - src/app/components/form/form.component.html - 134 - - form button - - - https://en.wikipedia.org/wiki/Request_for_Comments - - src/app/components/faq/faq.component.html - 86 - - RFC Wikipedia link - - - Expand all modules - - src/app/components/result/result.component.html - 160 - - result filter messages - - - The descriptions of message levels such as NOTICE, WARNING and ERROR are found in Severity Level Definitions. - - src/app/components/faq/faq.component.html - 92,94 - - faq answer - - - Test result for - - src/app/components/result/result.component.html - 11 - - result subheader - - - Created on - - src/app/components/result/result.component.html - 13 - - result test metadata - - - Name of nameserver # - - src/app/components/form/form.component.html - 87 - - form label - - - Key tag of DS record # - - src/app/components/form/form.component.html - 156 - - form label - - - This can be quite useful if one is going to migrate one's domain from one registrar to another, for example, migrate zone 'example.com' from the name server 'ns.example.com' to the name server 'ns.example.org'. In this scenario one could perform an undelegated domain test providing the zone ('example.com') and the name server you are migrating to ('ns.example.org') before you migrate your domain. - - src/app/components/faq/faq.component.html - 169,171 - - faq answer - - - Address of nameserver # - - src/app/components/form/form.component.html - 109 - - form label - - - Algorithm of DS record # - - src/app/components/form/form.component.html - 177 - - form label - - - Show options - - src/app/components/form/form.component.html - 56 - - form options - - - When the results of the test doesn't show any errors or warnings one can be fairly certain that the domain's new location is working well. However there might still be other problems in the zone data itself that this test is unaware of. - - src/app/components/faq/faq.component.html - 172,174 - - faq answer - - - Digest type of DS record # - - src/app/components/form/form.component.html - 210 - - form label - - - Digest of DS record # - - src/app/components/form/form.component.html - 235 - - form label - - - Hide options - - src/app/components/form/form.component.html - 57 - - form options - - - Backend, a server that allows you to run Zonemaster tests and save results using a JSON-RPC API and a database; - - src/app/components/faq/faq.component.html - 26 - - faq answer - - - DNS administrators, experts and beginners alike, who want to check their DNS configuration; - - src/app/components/faq/faq.component.html - 51 - - faq answer - - - Error - - src/app/components/result/result.component.ts - 40 - - - - Critical - - src/app/components/result/result.component.ts - 41 - - - - Notice - - src/app/components/result/result.component.ts - 38 - - - - Info - - src/app/components/result/result.component.ts - 37 - - - - Warning - - src/app/components/result/result.component.ts - 39 - - - - Connectivity - - src/app/components/result/result.component.ts - 47 - - - - System - - src/app/components/result/result.component.ts - 44 - - - - Consistency - - src/app/components/result/result.component.ts - 48 - - - - Zone - - src/app/components/result/result.component.ts - 53 - - - - Delegation - - src/app/components/result/result.component.ts - 49 - - - - Syntax - - src/app/components/result/result.component.ts - 52 - - - - Address - - src/app/components/result/result.component.ts - 46 - - - - DNSSEC - - src/app/components/result/result.component.ts - 50 - - - - Nameserver - - src/app/components/result/result.component.ts - 51 - - - - Basic - - src/app/components/result/result.component.ts - 45 - - - - - \ No newline at end of file diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index 91ec6da5..00000000 --- a/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.log(err)); diff --git a/src/messages/.gitignore b/src/messages/.gitignore new file mode 100644 index 00000000..d6b7ef32 --- /dev/null +++ b/src/messages/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/src/middleware.ts b/src/middleware.ts new file mode 100644 index 00000000..eeafd5bf --- /dev/null +++ b/src/middleware.ts @@ -0,0 +1,22 @@ +import { defineMiddleware } from 'astro:middleware'; +import { setLocale, isValidLocale } from '@/messages'; + +export const onRequest = defineMiddleware(({ url }, next) => { + // base should always end with '/' + const base = import.meta.env.BASE_URL; + let pathname = url.pathname; + if (pathname.startsWith(base)) { + pathname = pathname.slice(base.length); + } + + // Extract locale from the first path segment after removing base URL + // (e.g., /subdirectory/en/page -> en/page -> 'en') + const pathSegments = pathname.split('/').filter(Boolean); + const localeFromPath = pathSegments[0]; + + if (isValidLocale(localeFromPath)) { + setLocale(localeFromPath); + } + + return next(); +}); diff --git a/src/pages/[lang]/faq.astro b/src/pages/[lang]/faq.astro new file mode 100644 index 00000000..2ac6f2fa --- /dev/null +++ b/src/pages/[lang]/faq.astro @@ -0,0 +1,30 @@ +--- +import * as m from '@/messages'; +import FAQ from '@theme/Faq.astro'; +import Layout from '@theme/Layout.astro'; +import { getCollection, type CollectionEntry } from 'astro:content'; +import config from '@/config'; + +export function getStaticPaths() { + return config.enabledLanguages.map((lang) => ({ params: { lang } })); +} + +const { lang } = Astro.params; +const faq = await getCollection('faq', ({ id }) => { + return id.startsWith(`${lang}/`); +}); + +type FaqItem = CollectionEntry<'faq'>; +// Object.groupBy returns a Partial which we convert to Record with a default empty array +const groupedPartial = Object.groupBy( + faq, + (item: FaqItem) => item.data.category, +); +const grouped = groupedPartial as Record; + +export const prerender = true; +--- + + + + diff --git a/src/pages/[lang]/index.astro b/src/pages/[lang]/index.astro new file mode 100644 index 00000000..097f2c34 --- /dev/null +++ b/src/pages/[lang]/index.astro @@ -0,0 +1,15 @@ +--- +import Welcome from '@theme/StartTest.astro'; +import Layout from '@theme/Layout.astro'; +import config from '@/config'; + +export function getStaticPaths() { + return config.enabledLanguages.map((lang) => ({ params: { lang } })); +} + +export const prerender = true; +--- + + + + diff --git a/src/pages/[lang]/result/[...id].astro b/src/pages/[lang]/result/[...id].astro new file mode 100644 index 00000000..4f817fce --- /dev/null +++ b/src/pages/[lang]/result/[...id].astro @@ -0,0 +1,16 @@ +--- +import * as m from '@/messages'; +import Result from '@theme/Result.astro'; +import Layout from '@theme/Layout.astro'; +import config from '@/config'; + +export function getStaticPaths() { + return config.enabledLanguages.map((lang) => ({ + params: { lang, id: 'id' }, + })); +} +--- + + + + diff --git a/src/pages/[lang]/result/index.astro b/src/pages/[lang]/result/index.astro new file mode 100644 index 00000000..f6eab441 --- /dev/null +++ b/src/pages/[lang]/result/index.astro @@ -0,0 +1,16 @@ +--- +import * as m from '@/messages'; +import Result from '@/themes/default/Result.astro'; +import Layout from '@/themes/default/Layout.astro'; +import config from '@/config'; + +export function getStaticPaths() { + return config.enabledLanguages.map((lang) => ({ params: { lang } })); +} + +export const prerender = true; +--- + + + + diff --git a/src/app/components/history/history.component.css b/src/pages/index.astro similarity index 100% rename from src/app/components/history/history.component.css rename to src/pages/index.astro diff --git a/src/polyfills.ts b/src/polyfills.ts deleted file mode 100644 index 0305349d..00000000 --- a/src/polyfills.ts +++ /dev/null @@ -1,27 +0,0 @@ -/*************************************************************************************************** - * Load `$localize` onto the global scope - used if i18n tags appear in Angular templates. - */ -import '@angular/localize/init'; - - - -/*************************************************************************************************** - * Zone JS is required by Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ - -/** - * Date, currency, decimal and percent pipes. - * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 - */ -// import 'intl'; // Run `npm install --save intl`. -/** - * Need to import at least one locale-data with intl. - */ -// import 'intl/locale-data/jsonp/en'; diff --git a/src/styles.scss b/src/styles.scss deleted file mode 100644 index ca664181..00000000 --- a/src/styles.scss +++ /dev/null @@ -1,195 +0,0 @@ -@import "~bootstrap/scss/bootstrap"; - -html, body { - margin:0; - padding:0; -} - -body { - line-height: 1.6; - font-size: 1.1rem; -} - -h1, h2, h3, h4, h5, h6 { - font-weight: normal; -} - -main { - margin: 4rem auto; -} - -:root { - --primary-color-lighter: #edebff; - --primary-color-lighter-hover: #f9f8ff; - --primary-color-light: #b2aafb; - --primary-color-light-rgb: 178, 170, 251; - --primary-color: #7255d9; - --primary-color-rgb: 114, 85, 217; - --primary-color-dark: #593fb7; - - --secondary-color-light: #f7f7f7; - --secondary-color: #e8e8e8; - --secondary-color-dark: #c6c6c6; - --secondary-color-darker: #848484; - - --outline-focus-color: #ff8a47; - --link-color: #2d258e; - --link-color-hover: var(--primary-color-dark); -} - -*:focus-visible { - outline: .3rem solid var(--outline-focus-color); -} - -button:focus-visible, -button.btn:focus-visible { - outline: 0; - border-color: var(--primary-color); - box-shadow: 0 0 0 0.25rem var(--outline-focus-color); -} - -.form-check-input.is-invalid:focus, -.form-control.is-invalid:focus, -.form-select.is-invalid:focus, -.form-select:focus, -.form-check-input:focus, -.form-control:focus { - border-color: var(--primary-color); - box-shadow: 0 0 0 0.25rem var(--outline-focus-color) -} - -.btn.btn-primary { - --bs-btn-disabled-bg: var(--primary-color-dark); - --bs-btn-disabled-border-color: var(--primary-color-dark); - - --bs-btn-hover-border-color: var(--primary-color); - --bs-btn-hover-bg: var(--primary-color-dark); - - --bs-btn-border-color: var(--primary-color-dark); - --bs-btn-bg: var(--primary-color); -} - -.btn.btn-secondary { - --bs-btn-color: inherited; - --bs-btn-bg: var(--secondary-color); - --bs-btn-border-color: var(--secondary-color-dark); - - --bs-btn-hover-color: inherited; - --bs-btn-hover-bg: var(--secondary-color-light); - --bs-btn-hover-border-color: var(--secondary-color-dark); -} - -.btn.btn-danger { - --bs-btn-color: inherited; - --bs-btn-bg: #ffc2c8; - --bs-btn-border-color: #ff8d98; - - --bs-btn-hover-color: inherited; - --bs-btn-hover-bg: #ffe1e3; - --bs-btn-hover-border-color: #ff8d98; -} - -footer .tooltip { - --bs-tooltip-max-width: auto; -} - -.pagination { - justify-content: center; -} - - -.faq-question, -details.details-info { - margin-bottom: 0.5rem; -} - -.faq-question header, -details.details-info summary { - transition: .3s background; - list-style: none; - margin: 0; - background-color: var(--primary-color-lighter); - border: 1px solid var(--primary-color-light); - padding: .75em .75em; - border-radius: .5em; - display: flex; - align-items: center; -} - -.faq-question header *, -details.details-info summary * { - margin: 0; -} - -.faq-question:not(.open) header ~ * { - display: none; -} - -.faq-question.open header, -.faq-question header:hover, -.faq-question header:focus-within, -details.details-info[open] summary, -details.details-info summary:hover, -details.details-info summary:focus { - color: var(--primary-color-dark); - background-color: var(--primary-color-lighter-hover); -} - -.faq-question header .control, -details summary .control { - margin-right: 1em; - transform: rotate(0); - transition: 0.1s transform; -} - -.faq-question.open header, -details.details-info[open] summary { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - - -.faq-question.open header ~ *, -details.details-info[open] summary ~ * { - padding: .5em .75em; - background-color: var(--primary-color-lighter); - border: 1px solid var(--primary-color-light); - border-radius: .5em; - border-top-left-radius: 0; - border-top-right-radius: 0; - border-top: none; -} - -.faq-question.open header .control, -details[open] summary .control { - transform: rotate(90deg); -} - -h2 { - display: inline-block; - margin-bottom: 1.5rem; -} - -h3 { - font-size: calc(1.2rem + 0.5vw); -} - -a.nav-link { - color: rgba(0, 0, 0, .7); -} - -.link, -a { - color: var(--link-color); - text-decoration: underline; -} - -.link:hover, -a:hover { - color: var(--link-color-hover); -} -@media(min-width:1200px) { - .about h3 { - font-size: 1.5rem; - } -} diff --git a/src/themes/default/Article.astro b/src/themes/default/Article.astro new file mode 100644 index 00000000..90f93c83 --- /dev/null +++ b/src/themes/default/Article.astro @@ -0,0 +1,35 @@ +--- + import * as m from '@/messages'; + import { Image } from 'astro:assets'; + import Stack from '@/lib/components/Stack/Stack.svelte'; + import Grid from '@/lib/components/Grid/Grid.svelte'; + import image1 from '../../assets/images/person_looking_at_computer.svg'; + import image2 from '../../assets/images/world_connected.svg'; +--- + +
+ + +
+ {m.img1Alt()} +
+
+

{m.infoHeading1()}

+

{m.infoPreamble()}

+

{m.infoTextParagraph1()}

+

{m.infoTextStrong()} {m.infoTextParagraph2()}

+
+
+
+ + +
+

{m.infoHeading2()}

+

{m.infoTextParagraph3}

+
+
+ {m.img2Alt()} +
+
+
+
diff --git a/src/themes/default/Banner.astro b/src/themes/default/Banner.astro new file mode 100644 index 00000000..7821d593 --- /dev/null +++ b/src/themes/default/Banner.astro @@ -0,0 +1,33 @@ +
+ diff --git a/src/themes/default/Content.astro b/src/themes/default/Content.astro new file mode 100644 index 00000000..83904e23 --- /dev/null +++ b/src/themes/default/Content.astro @@ -0,0 +1,5 @@ +
+
+ +
+
diff --git a/src/themes/default/Faq.astro b/src/themes/default/Faq.astro new file mode 100644 index 00000000..58f0a01c --- /dev/null +++ b/src/themes/default/Faq.astro @@ -0,0 +1,41 @@ +--- +import * as m from '@/messages'; +import type { CollectionEntry } from 'astro:content'; +import Collapsible from '@/lib/components/Collapsible/Collapsible.svelte'; + +export interface FaqItem extends CollectionEntry<'faq'> { + data: { + question: string; + category: string; + }; + rendered: { + html: string; + }; + id: string; +} + +export interface FaqProps { + data: Record; +} + +const { data } = Astro.props as FaqProps; +--- + +

{m.faqTitle()}

+

{m.faqPreamble()}

+

{m.faqTextParagraph1()} {m.faqParagraph1Link()}

+{ + Object.keys(data).sort().map((category) => ( +
+
{category}
+ {data[category].map((item: FaqItem) => ( + + ))} +
+ )) +} diff --git a/src/themes/default/Footer.astro b/src/themes/default/Footer.astro new file mode 100644 index 00000000..0bdb0424 --- /dev/null +++ b/src/themes/default/Footer.astro @@ -0,0 +1,45 @@ +--- +import * as m from '@/messages'; +import ProgramVersions from '@/lib/components/ProgramVersions/ProgramVersions.svelte'; +import Grid from '@/lib/components/Grid/Grid.svelte'; +import config from '@/config'; +--- + + diff --git a/src/themes/default/Header.astro b/src/themes/default/Header.astro new file mode 100644 index 00000000..518434a8 --- /dev/null +++ b/src/themes/default/Header.astro @@ -0,0 +1,21 @@ +--- +import LanguageSwitcher from './LanguageSwitcher.astro'; +import Logo from './Logo.astro'; +import Navigation from './Navigation.astro'; +import MobileMenuButton from './MobileMenuButton.astro'; +import config from '@/config'; +--- + +
+
+
+ + {config.siteInfo.siteName} + + +
+
+
diff --git a/src/themes/default/LanguageSwitcher.astro b/src/themes/default/LanguageSwitcher.astro new file mode 100644 index 00000000..464b92b6 --- /dev/null +++ b/src/themes/default/LanguageSwitcher.astro @@ -0,0 +1,69 @@ +--- +import { getLocale } from '@/messages'; +import * as m from '@/messages'; +import config from '@/config'; + +const currentLanguage = getLocale(); +const languages = { + en: 'English', + sv: 'Svenska', + es: 'Español', + da: 'Dansk', + fr: 'Français', + nb: 'Norsk Bokmål', + fi: 'Suomi', + sl: 'Slovenščina', +}; +--- + +
+ + + +
+ diff --git a/src/themes/default/Layout.astro b/src/themes/default/Layout.astro new file mode 100644 index 00000000..655728b0 --- /dev/null +++ b/src/themes/default/Layout.astro @@ -0,0 +1,31 @@ +--- +import BaseLayout from '@/layouts/BaseLayout.astro'; +import Skip from './Skip.astro'; +import Header from './Header.astro'; +import Content from './Content.astro'; +import Alerts from '@/lib/components/Alert/Alerts.svelte'; +import Footer from './Footer.astro'; +import Banner from './Banner.astro'; + +interface Props { + title?: string; +} + +const { title } = Astro.props; +--- + + + +
+ + + + +